def render(self, name, value, attrs = None): if value is None: value = '' final_attrs = self.build_attrs(attrs, type = self.input_type, name = name) if value != '': final_attrs['value'] = force_unicode(value) else: final_attrs['value'] = '' target_id = generate_target_id(final_attrs['base_content_type'], final_attrs['base_object_id']) data_id = generate_data_id(final_attrs['base_content_type'], final_attrs['base_object_id']) init_id = generate_init_id(final_attrs['base_content_type'], final_attrs['base_object_id']) element_class = "%s %s" % (final_attrs.get('class', ''), getattr(settings, 'RELATEDCONTENT_FIELD_CLASS', '')) target_attrs = {} target_attrs['id'] = target_id target_attrs['class'] = element_class data_attrs = {} data_attrs['id'] = data_id data_attrs['type'] = 'hidden' data_attrs['class'] = element_class data_attrs['value'] = self.get_initial_data(final_attrs['initial_data']) data_attrs['name'] = final_attrs['name'] init_attrs = {} init_attrs['id'] = init_id init_attrs['class'] = element_class relatedcontent_url = generate_relatedcontent_url(base_url = final_attrs['base_url'], mode = getattr(settings, 'UPDATE_MODES')[0], target_id = target_id, data_id = data_id) target_url = generate_thickbox_url(relatedcontent_url, final_attrs['iframe_width'], final_attrs['iframe_height']) initial_target = self.get_initial_target(final_attrs['base_object'], final_attrs['initial_data'], target_id, data_id) target = u"""<div%s>%s</div>""" % (flatatt(target_attrs), initial_target) data = u"""<input%s></input>""" % flatatt(data_attrs) init = u"""<a href='%s' %s>Select</a>""" % (target_url, flatatt(init_attrs)) thickbox_script = generate_enable_thickbox(init_id) bind_click_script = "" return mark_safe(target + "\n" + data + "\n" + init + "\n" + thickbox_script + "\n" + bind_click_script)
def render(self, context): base_content_type = resolve_variable(self.base_content_type, context, self.base_content_type) base_object_id = resolve_variable(self.base_object_id, context, self.base_object_id) usage = resolve_variable(self.usage, context, self.usage) update_mode = resolve_variable(self.update_mode, context, self.update_mode) associate_url = resolve_variable(self.associate_url, context, self.associate_url) iframe_height = resolve_variable(self.iframe_height, context, self.iframe_height) iframe_width = resolve_variable(self.iframe_width, context, self.iframe_width) resolved_associate_url = reverse(associate_url) base_content_type_object = ContentType.objects.get(id = int(base_content_type)) base_content_model = base_content_type_object.model_class() if base_object_id > 0: base_object = base_content_model.objects.get(id = base_object_id) else: base_object = None target_id = generate_target_id(base_content_type, base_object_id) data_id = generate_data_id(base_content_type, base_object_id) init_id = generate_init_id(base_content_type, base_object_id) initial_objects = self.get_initial_data(base_object, usage) initial_target = render_initial_target(base_object, initial_objects, target_id, data_id, associate_url = resolved_associate_url, usage = usage) base_url = reverse('django-relatedcontent-select', args=[base_content_type, base_object_id, usage]) relatedcontent_url = generate_relatedcontent_url(base_url = base_url, mode = update_mode, target_id = target_id, data_id = data_id, ajax_associate_url = associate_url) target_url = generate_thickbox_url(relatedcontent_url, iframe_width, iframe_height) new_context = {} new_context['target_id'] = target_id new_context['data_id'] = data_id new_context['init_id'] = init_id new_context['target_url'] = target_url new_context['initial_target'] = initial_target context['select_link_id'] = init_id return render_to_string('django_relatedcontent/generate_ajax_select.html', new_context)