mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #3184 -- Changed the unordered_list template filter to use a more simple format, while maintaining backwards compatibility with the old format.  unordered_list now works with a simple list of items.  Thanks for the patch, SmileyChris.
				
					
				
			git-svn-id: http://code.djangoproject.com/svn/django/trunk@6019 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -355,8 +355,8 @@ def unordered_list(value): | ||||
|     Recursively takes a self-nested list and returns an HTML unordered list -- | ||||
|     WITHOUT opening and closing <ul> tags. | ||||
|  | ||||
|     The list is assumed to be in the proper format. For example, if ``var`` contains | ||||
|     ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``, | ||||
|     The list is assumed to be in the proper format. For example, if ``var`` | ||||
|     contains: ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``, | ||||
|     then ``{{ var|unordered_list }}`` would return:: | ||||
|  | ||||
|         <li>States | ||||
| @@ -371,14 +371,61 @@ def unordered_list(value): | ||||
|         </ul> | ||||
|         </li> | ||||
|     """ | ||||
|     def _helper(value, tabs): | ||||
|     def convert_old_style_list(list_): | ||||
|         """ | ||||
|         Converts old style lists to the new easier to understand format. | ||||
|  | ||||
|         The old list format looked like: | ||||
|             ['Item 1', [['Item 1.1', []], ['Item 1.2', []]] | ||||
|  | ||||
|         And it is converted to: | ||||
|             ['Item 1', ['Item 1.1', 'Item 1.2]] | ||||
|         """ | ||||
|         if not isinstance(list_, (tuple, list)) or len(list_) != 2: | ||||
|             return list_, False | ||||
|         first_item, second_item = list_ | ||||
|         if second_item == []: | ||||
|             return [first_item], True | ||||
|         old_style_list = True | ||||
|         new_second_item = [] | ||||
|         for sublist in second_item: | ||||
|             item, old_style_list = convert_old_style_list(sublist) | ||||
|             if not old_style_list: | ||||
|                 break | ||||
|             new_second_item.extend(item) | ||||
|         if old_style_list: | ||||
|             second_item = new_second_item | ||||
|         return [first_item, second_item], old_style_list | ||||
|     def _helper(list_, tabs=1): | ||||
|         indent = u'\t' * tabs | ||||
|         if value[1]: | ||||
|             return u'%s<li>%s\n%s<ul>\n%s\n%s</ul>\n%s</li>' % (indent, force_unicode(value[0]), indent, | ||||
|                 u'\n'.join([_helper(v, tabs+1) for v in value[1]]), indent, indent) | ||||
|         else: | ||||
|             return u'%s<li>%s</li>' % (indent, force_unicode(value[0])) | ||||
|     return _helper(value, 1) | ||||
|         output = [] | ||||
|  | ||||
|         list_length = len(list_) | ||||
|         i = 0 | ||||
|         while i < list_length: | ||||
|             title = list_[i] | ||||
|             sublist = '' | ||||
|             sublist_item = None | ||||
|             if isinstance(title, (list, tuple)): | ||||
|                 sublist_item = title  | ||||
|                 title = '' | ||||
|             elif i < list_length - 1: | ||||
|                 next_item = list_[i+1] | ||||
|                 if next_item and isinstance(next_item, (list, tuple)): | ||||
|                     # The next item is a sub-list. | ||||
|                     sublist_item = next_item | ||||
|                     # We've processed the next item now too. | ||||
|                     i += 1  | ||||
|             if sublist_item: | ||||
|                 sublist = _helper(sublist_item, tabs+1) | ||||
|                 sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist, | ||||
|                                                          indent, indent) | ||||
|             output.append('%s<li>%s%s</li>' % (indent, force_unicode(title), | ||||
|                                                sublist)) | ||||
|             i += 1 | ||||
|         return '\n'.join(output) | ||||
|     value, converted = convert_old_style_list(value)  | ||||
|     return _helper(value) | ||||
|  | ||||
| ################### | ||||
| # INTEGERS        # | ||||
|   | ||||
		Reference in New Issue
	
	Block a user