Example #1
0
	def render(self):
		self.req.content.report('header', tags.style(type='text/css')[
			"@import '%s';" % self.req.get_path('assets/progress-bar/style.css')
		])
	
		assets.activate_jquery(self.req)
		
		self.req.content.report('header', tags.script(type='text/javascript',
			src=self.req.get_path('assets/progress-bar/support.js'))[''])
	
		element_id = self.attribs.get('element_id', 'progress-bar')
		attribs = self.attribs.copy()
		attribs.pop('element_id', None)
	
		content = tags.div(_id=element_id, _class='progress-field', **attribs)[[
			tags.div(_class='progress-bar')[''],
			tags.div(_class='progress-text')['']
		]]
		
		if(self.callback_url):
			content += tags.script(type='text/javascript')[
				'waitForCompletion("%s", "%s", %d);' % (element_id, self.callback_url, self.interval)
			]
		else:
			content += tags.script(type='text/javascript')[
				'setProgress("%s", %d, %d);' % (element_id, self.value, self.maxvalue)
			]
		
		return content
Example #2
0
	def page_guide(self, pages, url):
		if(url.find('?') == -1):
			url += '?'
		else:
			from cgi import parse_qs
			from urllib import urlencode
			stub, query = url.split('?')
			query = parse_qs(query)
			if('page' in query):
				del query['page']
			url = '%s?%s&' % (stub, urlencode(query, True))
		
		if(pages.has_previous()):
			prev = tags.span()[tags.a(href="%spage=%d" % (url, pages.page - 1))['<< Previous']]
		else:
			prev = tags.span()['<< Previous']
		
		if(pages.has_next()):
			next = tags.span()[tags.a(href="%spage=%d" % (url, pages.page + 1))['Next >>']]
		else:
			next = tags.span()['Next >>']
		
		return tags.div(_class='page-guide')[[
			tags.div()['Items %d – %d of %s shown.' %
				(pages.start_range, pages.end_range, pages.total_results)],
			tags.div()[prev, ' | ', next]
		]]
Example #3
0
	def theme_note_list(self, form_id, element):
		content = ''
		for child_id in element:
			child = element[child_id]
			thm = child.get_theme(self.req, current=self)
		
			theme_func = getattr(thm, 'theme_' + child.attr('type', 'fieldset'))
			
			content += tags.div(_class="note")[theme_func(element.name, child)]
		
		return content
Example #4
0
	def theme_element(self, form_id, element, rendered_element):
		content = ''
		
		if not(element.attr('basic_element', False)):
			if(element.attr('required', False)):
				asterisk = tags.span(_class="required")['*']
			else:
				asterisk = ''
			
			if(hasattr(element, 'label')):
				content += tags.label(_class="field-label")[[element.label, asterisk]]
			
		prefix = element.attr('prefix', False)
		if(callable(prefix)):
			content += prefix(element)
		elif(prefix):
			content += str(prefix)
		
		content += rendered_element
			
		suffix = element.attr('suffix', False)
		if(callable(suffix)):
			content += suffix(element)
		elif(suffix):
			content += str(suffix)
		
		if not(element.attr('basic_element', False)):
			if(hasattr(element, 'help')):
				content += tags.div(_class='form-help')[element.help]
			
			if(element.has_errors(recurse=False)):
				element_class = 'form-item form-error'
			else:
				element_class = 'form-item'
			
			item_id = 'form-item-%s' % element.name
			if(element.attr('deep_form_ids', False, recurse=True)):
				item_id = 'form-item-%s' % '-'.join(element.get_element_path())
			content = tags.div(_class=element_class, _id=item_id)[content]
		
		return content
Example #5
0
	def theme_radiogroup(self, form_id, element):
		comparator = element.attr('sort', cmp)
		options_clone = copy.copy(element.attr('options', []))
		option_keys, option_data = self._mangle_option_data(options_clone, comparator)
		
		def _create_radio(value, default_value):
			attribs = {}
			if(str(value) == str(default_value)):
				attribs['checked'] = None
			attribs['value'] = value
			attribs['type'] = 'radio'
			attribs['name'] = element.get_element_name()
			return tags.input(**attribs)
		
		element = [str(tags.label()[[
			_create_radio(key, element.attr('value', None)),
			' ', option_data[key]
		]]) for key in option_keys]
		
		return tags.div(_class="radio-group")[''.join(element)]
Example #6
0
	def get_element(self, req, style, storable):
		"""
		@see: L{modu.editable.define.definition.get_element()}
		"""
		store = storable.get_store()
		
		assets.activate_jquery(req)
		req.content.report('header', tags.script(src=req.get_path('regex.js'))[''])
		
		frm = form.FormNode(self.name)(type='fieldset', style='full')
		frm['source'](
			label	= 'source text',
			type	= 'textarea',
		)
		frm['matches'](
			type	= 'markup',
			value	= tags.div(id="result-breakdown")[''],
		)
		frm['check'](
			type	= 'submit',
			value	= 'check',
			attributes = dict(
				id	= 'regex-check-button',
			)
		)
		frm['script'](
			type	= 'markup',
			value	= tags.script(type='text/javascript')["""
			$(document).ready(function(){
				$('#regex-check-button').click(function(){
					var url = $('#form-item-origin_url input').val();
					var pattern = $('#form-item-item_match textarea').val();
					testRegex(url, pattern);
					return false;
				});
			});
			"""],
		)
		
		return frm
Example #7
0
	def theme_body_text(self, form_id, element):
		return tags.div(_class="note-body")[element.attr('value', '')]