linkcell: can link to a page; can have an anchor(#7400)

This commit is contained in:
Thomas NOËL 2015-05-29 12:04:17 +02:00
parent b1bb35a952
commit 82e4bef240
3 changed files with 54 additions and 3 deletions

View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('data', '0006_linkcell'),
]
operations = [
migrations.AddField(
model_name='linkcell',
name='anchor',
field=models.CharField(max_length=150, verbose_name='Anchor', blank=True),
preserve_default=True,
),
migrations.AddField(
model_name='linkcell',
name='link_page',
field=models.ForeignKey(related_name='link_cell', to='data.Page', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='linkcell',
name='title',
field=models.CharField(max_length=150, verbose_name='Title', blank=True),
preserve_default=True,
),
migrations.AlterField(
model_name='linkcell',
name='url',
field=models.URLField(verbose_name='URL', blank=True),
preserve_default=True,
),
]

View File

@ -440,8 +440,10 @@ class MenuCell(CellBase):
@register_cell_class
class LinkCell(CellBase):
title = models.CharField(_('Title'), max_length=150)
url = models.URLField(_('URL'))
title = models.CharField(_('Title'), max_length=150, blank=True)
url = models.URLField(_('URL'), blank=True)
link_page = models.ForeignKey('data.Page', related_name='link_cell', null=True)
anchor = models.CharField(_('Anchor'), max_length=150, blank=True)
template_name = 'combo/link-cell.html'
@ -452,3 +454,14 @@ class LinkCell(CellBase):
if not self.title:
return None
return utils.ellipsize(self.title)
def render(self, context):
if self.link_page:
context['url'] = self.link_page.get_online_url()
context['title'] = self.title or self.link_page.title
else:
context['url'] = self.url
context['title'] = self.title or self.url
if self.anchor:
context['url'] += '#' + self.anchor
return super(LinkCell, self).render(context)

View File

@ -1 +1 @@
<a href="{{cell.url}}">{{cell.title}}</a>
<a href="{{url}}">{{title}}</a>