From 36237c3ee5f5f96fc2d17187092230bb30924467 Mon Sep 17 00:00:00 2001 From: Gaetan Delannay Date: Fri, 25 Mar 2011 18:03:45 +0100 Subject: [PATCH] appy.gen: bugfix with the master/slave mechanism while launching Zope in debug mode; added boolean attribute Date.reverseYears allowing to display years in reverse order in the widgets for choosing the year; bugfix in Javascript code for hiding slave widgets with Google Chrome. --- gen/__init__.py | 19 ++++++++-- gen/plone25/mixins/__init__.py | 4 +++ gen/plone25/skin/help.png | Bin 735 -> 591 bytes gen/plone25/skin/page.pt | 2 +- gen/plone25/skin/widgets/date.pt | 2 +- gen/plone25/templates/IEFixes.css.dtml | 48 +++++++------------------ 6 files changed, 35 insertions(+), 40 deletions(-) diff --git a/gen/__init__.py b/gen/__init__.py index a2cbf81..6442036 100644 --- a/gen/__init__.py +++ b/gen/__init__.py @@ -467,6 +467,10 @@ class Type: attributes that are based on the name of the Appy p_klass, and the application name (p_appName).''' self.name = name + # Recompute the ID (and derived attributes) that may have changed if + # we are in debug mode (because we recreate new Type instances). + self.id = id(self) + if self.slaves: self.master_css = 'appyMaster master_%s' % self.id # Determine ids of i18n labels for this field if not klass: prefix = appName else: prefix = getClassName(klass, appName) @@ -1381,9 +1385,9 @@ class Date(Type): default=None, optional=False, editDefault=False, format=WITH_HOUR, calendar=True, startYear=time.localtime()[0]-10, - endYear=time.localtime()[0]+10, show=True, page='main', - group=None, layouts=None, move=0, indexed=False, - searchable=False, specificReadPermission=False, + endYear=time.localtime()[0]+10, reverseYears=False, + show=True, page='main', group=None, layouts=None, move=0, + indexed=False, searchable=False, specificReadPermission=False, specificWritePermission=False, width=None, height=None, colspan=1, master=None, masterValue=None, focus=False, historized=False, mapping=None): @@ -1391,6 +1395,9 @@ class Date(Type): self.calendar = calendar self.startYear = startYear self.endYear = endYear + # If reverseYears is True, in the selection box, available years, from + # self.startYear to self.endYear will be listed in reverse order. + self.reverseYears = reverseYears Type.__init__(self, validator, multiplicity, index, default, optional, editDefault, show, page, group, layouts, move, indexed, searchable, specificReadPermission, @@ -1406,6 +1413,12 @@ class Date(Type): return ('jscalendar/calendar_stripped.js', 'jscalendar/calendar-en.js') + def getSelectableYears(self): + '''Gets the list of years one may select for this field.''' + res = range(self.startYear, self.endYear + 1) + if self.reverseYears: res.reverse() + return res + def validateValue(self, obj, value): DateTime = obj.getProductConfig().DateTime try: diff --git a/gen/plone25/mixins/__init__.py b/gen/plone25/mixins/__init__.py index ef7fbb8..2e6e6a0 100644 --- a/gen/plone25/mixins/__init__.py +++ b/gen/plone25/mixins/__init__.py @@ -1002,6 +1002,10 @@ class BaseMixin: # Compare the value return compValue == dateValue + def getSelectableYears(self, name): + '''Gets the list of selectable years for Date field named p_name.''' + return self.getAppyType(name).getSelectableYears() + def getPossibleValues(self, name, withTranslations, withBlankValue, className=None): '''Gets the possible values for field named p_name. This field must be a diff --git a/gen/plone25/skin/help.png b/gen/plone25/skin/help.png index 8afba6c72f82ba6f676059b5a7bbaa1705f42b91..34dd1e92a98109d9892a149980bba38964606b5d 100644 GIT binary patch delta 542 zcmV+(0^$AN1M2l8|TiXUvt;9_*tCFJV!-KP@=<7~%Cmf#!Srr5G2eIzv#rbJ28~*qYv%^&P6qTO6PzFIBQVO++6LLZo_b%3 zA zSpHtcw+f+cqoSz7+2IV;TAO>1-qH#!3RokU$>|0Cv|7PAi-@330C1576%=LYU=QAK zf0DS_In)VvZk%G``bn%i690*vt`LIm6)2zBck{KjaJCi%*UMwoFJk&k>8=j{TSYp+ZXs3 gvy)das>=WH1CwME3b91@3IG5A07*qoM6N<$f^M(;0{{R3 delta 688 zcmV;h0#E(V1m6WAiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZy{f7%5R z2@nVr{ELqO00Li0L_t(I%bk#|~@npzw9T!-~>W$kAG?Wx&fBD?;0b zrpbVNZ#}FC-}?si+epalLY5t?n^BbKABT9+JxFWgG)%@d)(S_q%>%#zxZP1Aj1y|i zsP+u__~nQLo99!X&(V;tVf(6CFF<#T1%Y9oWAi2#|SGI%%J2a zeEnI*rb5q;A?orjUJwJ|jsao}N~#d25h{u*Y+71ms2p+j`b)w%MS;`^uH#T1cQ6JB zB2-~cT`i?iACVLh;pnBue*oAd1r-!!cCi69I^n4l!J)x{T}(LIkRG6QD40OLJ-DWd+=`Jza2@~xON3;Volf2 zGJg1%gZ3xgxDL#%cg^0di)n2x(D}KKj;9m#SfDT;5X#L ztq!Kvx}X^Nvyvz=jdfEve&s1aluW+FLuc+&@j@@R|4=drZf{0>8CIXgqGd#Vxzp|U^WZgWmlYgmtc#?zv(J!O@ WZ*!M5?Dzlx002ov22Mn-LSTYNKuOvF diff --git a/gen/plone25/skin/page.pt b/gen/plone25/skin/page.pt index 099c7a0..e0f6077 100644 --- a/gen/plone25/skin/page.pt +++ b/gen/plone25/skin/page.pt @@ -649,7 +649,7 @@ // There are multiple values, split it var subValues = idField.substring(1, idField.length-1).split(','); for (var k=0; k < subValues.length; k++){ - var subValue = subValues[k].strip(); + var subValue = subValues[k].replace(' ',''); masterValue.push(subValue.substring(1, subValue.length-1)); } } diff --git a/gen/plone25/skin/widgets/date.pt b/gen/plone25/skin/widgets/date.pt index e6650e1..b7eab48 100644 --- a/gen/plone25/skin/widgets/date.pt +++ b/gen/plone25/skin/widgets/date.pt @@ -3,7 +3,7 @@ Edit macro for an Date. This field is not used but required by the Javascript popup. diff --git a/gen/plone25/templates/IEFixes.css.dtml b/gen/plone25/templates/IEFixes.css.dtml index b89bee3..9970dd5 100644 --- a/gen/plone25/templates/IEFixes.css.dtml +++ b/gen/plone25/templates/IEFixes.css.dtml @@ -1,17 +1,9 @@ /* Appy-specific IE-fixes */ -.portletSearch { - font-size: 85%; - border-left: 1px solid #8cacbb; - border-right: 1px solid #8cacbb; -} +.portletSearch { font-size: 85%; border-left: 1px solid #8cacbb; border-right: 1px solid #8cacbb; } /* Stylesheet with Internet Explorer-specific workarounds. */ -* html #portal-columns { - width: 100%; -} -* html*#portal-columns { - width: auto; -} +* html #portal-columns { width: 100%; } +* html*#portal-columns { width: auto; } /* */ #topIcons { right: 238px; } @@ -25,7 +17,6 @@ #portlet-hp-news .portletHeader { margin-top: 1px; } .section-ncp-home .portletHeader { font-size:110%; } input { margin-bottom: 1px; } - table.listing td.top { position: relative; left: -1px; top: -1px; } div#portal-columns div.portlet { text-align: left; } div#portal-columns div#portal-column-one, @@ -33,7 +24,6 @@ div#portal-columns div#portal-column-two { overflow: hidden; } textarea { width: 97%; } .visualOverflow { width: 88%; } .visualGhosted { filter:alpha(opacity=20); } - #portal-logo { height /**/: px; overflow: hidden; @@ -41,37 +31,26 @@ textarea { width: 97%; } #clear-space-before-wrapper-table { display: none }; /* Fix bottom margin on tabs in IE */ -#portal-globalnav li.selected a { -position: relative; -} - -#portal-colophon .colophonIcon { - height: 0px !important; - height /**/: 15px; -} - +#portal-globalnav li.selected a { position: relative; } +#portal-colophon .colophonIcon { height: 0px !important; height /**/: 15px; } .actionMenu .actionMenuHeader a { display: inline; } .actionMenu .actionMenuContent { top: 1.4em; } /* Calendar fixes */ -.ploneCalendar { - border-collapse:collapse; - width:auto; - height:1%; -} +.ploneCalendar { border-collapse:collapse; width:auto; height:1%; } .ploneCalendar td { width:1%; } .ploneCalendar .todaynoevent, .ploneCalendar .todayevent { position: relative; } .hiddenStructure { position: absolute; } body { /* These work in IE only, changes the look of the scrollbar + textareas */ - scrollbar-base-color: &dtml-globalBackgroundColor;; - scrollbar-highlight-color: &dtml-globalBackgroundColor;; - scrollbar-track-color: &dtml-evenRowBackgroundColor;; - scrollbar-darkshadow-color: &dtml-evenRowBackgroundColor;; - scrollbar-3dlight-color: &dtml-globalBorderColor;; - scrollbar-shadow-color: &dtml-globalBorderColor;; - scrollbar-arrow-color: &dtml-globalFontColor;; + scrollbar-base-color: &dtml-globalBackgroundColor;; + scrollbar-highlight-color: &dtml-globalBackgroundColor;; + scrollbar-track-color: &dtml-evenRowBackgroundColor;; + scrollbar-darkshadow-color: &dtml-evenRowBackgroundColor;; + scrollbar-3dlight-color: &dtml-globalBorderColor;; + scrollbar-shadow-color: &dtml-globalBorderColor;; + scrollbar-arrow-color: &dtml-globalFontColor;; } #floatholder, #float { height: 1%; } @@ -98,7 +77,6 @@ body { /* These work in IE only, changes the look of the scrollbar + textareas * * html p { position: relative; } * html h1.documentFirstHeading { height: auto; } * html #objectMenu.actionMenu .actionMenuContent li { height: auto; } - #portal-searchbox { overflow: hidden; } /* */