Changeset 5685

Show
Ignore:
Timestamp:
11/16/08 16:24:18 (2 months ago)
Author:
carndt
Message:

Fix #1914 (Improper SPAN/DIV nesting in big widgets)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.1/CHANGELOG.txt

    r5673 r5685  
    3939  templates (r5379, r5465, r5484). 
    4040* 'testutil.TGTest.tearDown' stops CherryPy server as well (r5461). 
     41* The root element of the ``CalendarDatePicker``, ``AutoCompleteField`` and 
     42  ``AutoCompleteTextField`` widgets have been changed from ``DIV`` to ``SPAN`` 
     43  to allow them to be used inside elements, which can not contain other 
     44  block-level elements (e.g. ``SPAN``). A ``class`` attribute is added to the 
     45  ``SPAN`` element, to allow it to be target by CSS rules easily (r5685) 
    4146 
    4247 
  • branches/1.1/turbogears/widgets/big_widgets.py

    r5321 r5685  
    2222 
    2323    template = """ 
    24     <div xmlns:py="http://purl.org/kid/ns#"> 
     24    <span xmlns:py="http://purl.org/kid/ns#" class="${field_class}"> 
    2525    <input type="text" id="${field_id}" class="${field_class}" name="${name}" value="${strdate}" py:attrs="attrs"/> 
    2626    <input type="button" id="${field_id}_trigger" class="date_field_button" value="${button_text}"/> 
     
    3333    }); 
    3434    </script> 
    35     </div
     35    </span
    3636    """ 
    3737    params = ["attrs", "skin", "picker_shows_time", "button_text", 
     
    144144 
    145145    template = """ 
    146     <div xmlns:py="http://purl.org/kid/ns#" id="${field_id}"> 
     146    <span xmlns:py="http://purl.org/kid/ns#" id="${field_id}" class="${field_class}"> 
    147147    <script language="JavaScript" type="text/JavaScript"> 
    148148        AutoCompleteManager${field_id} = new AutoCompleteManager('${field_id}', 
     
    156156    <img py:if="show_spinner" id="autoCompleteSpinner${field_id}" 
    157157        src="${tg.url([tg.widgets, 'turbogears.widgets/spinnerstopped.png'])}" alt=""/> 
    158     <div class="autoTextResults" id="autoCompleteResults${field_id}"/> 
     158    <span class="autoTextResults" id="autoCompleteResults${field_id}"/> 
    159159    ${hidden_field.display(value_for(hidden_field), **params_for(hidden_field))} 
    160     </div
     160    </span
    161161    """ 
    162162 
     
    224224 
    225225    template = """ 
    226     <div xmlns:py="http://purl.org/kid/ns#"> 
     226    <span xmlns:py="http://purl.org/kid/ns#" class="${field_class}"> 
    227227    <script language="JavaScript" type="text/JavaScript"> 
    228228        AutoCompleteManager${field_id} = new AutoCompleteManager('${field_id}', '${field_id}', null, 
     
    236236    <img py:if="show_spinner" id="autoCompleteSpinner${field_id}" 
    237237        src="${tg.url([tg.widgets, 'turbogears.widgets/spinnerstopped.png'])}" alt=""/> 
    238     <div class="autoTextResults" id="autoCompleteResults${field_id}"/> 
    239     </div
     238    <span class="autoTextResults" id="autoCompleteResults${field_id}"/> 
     239    </span
    240240    """ 
    241241 
  • branches/1.1/turbogears/widgets/tests/test_widgets.py

    r5508 r5685  
    651651    assert '<option value="java">' in output 
    652652    assert '<option value="pascal">' in output 
     653 
     654def test_calendardatepicker(): 
     655    """CalendarDatePicker widget is wrapped in a SPAN element with proper class 
     656    """ 
     657    w = widgets.CalendarDatePicker( 
     658       name = 'test_cdp', 
     659       field_class = 'my_cdp', 
     660       label='Test', 
     661       format='%m/%d/%Y', 
     662       validator = validators.DateConverter(format="mm/dd/yyyy") 
     663    ) 
     664    output = w.render(format='xhtml') 
     665    print output 
     666    assert '<span class="my_cdp">' in output 
     667 
     668def test_calendardatepicker(): 
     669    """CalendarDatePicker widget is wrapped in SPAN element with proper class 
     670    """ 
     671    w = widgets.CalendarDatePicker( 
     672       name = 'test_cdp', 
     673       field_class = 'cdp', 
     674       label='Test', 
     675       format='%m/%d/%Y', 
     676       validator = validators.DateConverter(format="mm/dd/yyyy") 
     677    ) 
     678    output = w.render(format='xhtml') 
     679    assert '<span class="cdp">' in output 
     680 
     681def test_autocompletefield(): 
     682    """AutoCompleteField widget is wrapped in SPAN element with proper class/id 
     683    """ 
     684    w = widgets.AutoCompleteField(name="my_acf", 
     685        field_class='acf', 
     686        search_controller="/search", 
     687        search_param="test", result_name="test") 
     688    output = w.render(format='xhtml') 
     689    assert '<span id="my_acf" class="acf">' in output 
     690 
     691def test_autocompletetextfield(): 
     692    """AutoCompleteTextField widget is wrapped in SPAN element with proper class/id 
     693    """ 
     694    w = widgets.AutoCompleteTextField(name="my_actf", 
     695        field_class='actf', 
     696        search_controller="/search", 
     697        search_param="test", result_name="test") 
     698    output = w.render(format='xhtml') 
     699    assert '<span class="actf">' in output