Added [more] tag to news
This commit is contained in:
parent
90ec8d8d43
commit
f1531ad987
|
@ -2883,6 +2883,9 @@ msgstr "+"
|
||||||
msgid "news.is_meeting"
|
msgid "news.is_meeting"
|
||||||
msgstr "[Treffen]"
|
msgstr "[Treffen]"
|
||||||
|
|
||||||
|
msgid "news.read_more"
|
||||||
|
msgstr "Weiterlesen »"
|
||||||
|
|
||||||
msgid "news.updated"
|
msgid "news.updated"
|
||||||
msgstr "Aktualisiert"
|
msgstr "Aktualisiert"
|
||||||
|
|
||||||
|
@ -2913,6 +2916,9 @@ msgstr "Oben anpinnen"
|
||||||
msgid "news.edit.message"
|
msgid "news.edit.message"
|
||||||
msgstr "Nachricht"
|
msgstr "Nachricht"
|
||||||
|
|
||||||
|
msgid "news.edit.hint"
|
||||||
|
msgstr "Du kannst Markdown und den [more] Tag benutzen"
|
||||||
|
|
||||||
msgid "form.search"
|
msgid "form.search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,9 @@ msgstr "+"
|
||||||
msgid "news.is_meeting"
|
msgid "news.is_meeting"
|
||||||
msgstr "[Meeting]"
|
msgstr "[Meeting]"
|
||||||
|
|
||||||
|
msgid "news.read_more"
|
||||||
|
msgstr "Continue reading »"
|
||||||
|
|
||||||
msgid "news.updated"
|
msgid "news.updated"
|
||||||
msgstr "Updated"
|
msgstr "Updated"
|
||||||
|
|
||||||
|
@ -183,6 +186,9 @@ msgstr "Pin to top"
|
||||||
msgid "news.edit.message"
|
msgid "news.edit.message"
|
||||||
msgstr "Message"
|
msgstr "Message"
|
||||||
|
|
||||||
|
msgid "news.edit.hint"
|
||||||
|
msgstr "You can use Markdown and the [more] tag"
|
||||||
|
|
||||||
msgid "form.search"
|
msgid "form.search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,8 @@
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
{{ f.textarea('text', __('news.edit.message'), {'required': true, 'rows': 10, 'value': news ? news.text : ''}) }}
|
{{ f.textarea('text', __('news.edit.message'), {'required': true, 'rows': 10, 'value': news ? news.text : ''}) }}
|
||||||
|
|
||||||
|
<p>{{ m.info(__('news.edit.hint')) }}</p>
|
||||||
|
|
||||||
{{ f.submit() }}
|
{{ f.submit() }}
|
||||||
|
|
||||||
{{ f.submit(m.icon('eye'), {'name': 'preview', 'btn_type': 'info', 'title': __('form.preview')}) }}
|
{{ f.submit(m.icon('eye'), {'name': 'preview', 'btn_type': 'info', 'title': __('form.preview')}) }}
|
||||||
|
|
|
@ -60,7 +60,10 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="card-body bg-body">
|
<div class="card-body bg-body">
|
||||||
{{ news.text|raw|markdown(false) }}
|
{{ news.text(not is_overview)|raw|markdown(false) }}
|
||||||
|
{% if is_overview and news.text != news.text(false) %}
|
||||||
|
{{ m.button(__('news.read_more'), url('news/' ~ news.id), null, 'sm') }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-footer {% if theme.type =='light' %}bg-light{% else %}bg-dark{% endif %} text-muted">
|
<div class="card-footer {% if theme.type =='light' %}bg-light{% else %}bg-dark{% endif %} text-muted">
|
||||||
|
|
|
@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Query\Builder as QueryBuilder;
|
use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property int $id
|
* @property int $id
|
||||||
|
@ -21,7 +22,7 @@ use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||||
* @property Carbon|null $updated_at
|
* @property Carbon|null $updated_at
|
||||||
*
|
*
|
||||||
* @property-read Collection|NewsComment[] $comments
|
* @property-read Collection|NewsComment[] $comments
|
||||||
* @property-read int|null $comments_count
|
* @property-read int|null $comments_count
|
||||||
*
|
*
|
||||||
* @method static QueryBuilder|LogEntry[] whereId($value)
|
* @method static QueryBuilder|LogEntry[] whereId($value)
|
||||||
* @method static QueryBuilder|LogEntry[] whereTitle($value)
|
* @method static QueryBuilder|LogEntry[] whereTitle($value)
|
||||||
|
@ -42,7 +43,7 @@ class News extends BaseModel
|
||||||
/** @var array */
|
/** @var array */
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'is_meeting' => 'boolean',
|
'is_meeting' => 'boolean',
|
||||||
'is_pinned' => 'boolean',
|
'is_pinned' => 'boolean',
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var array */
|
/** @var array */
|
||||||
|
@ -62,4 +63,20 @@ class News extends BaseModel
|
||||||
return $this->hasMany(NewsComment::class)
|
return $this->hasMany(NewsComment::class)
|
||||||
->orderBy('created_at');
|
->orderBy('created_at');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $showMore
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function text(bool $showMore = true): string
|
||||||
|
{
|
||||||
|
if ($showMore || !Str::contains($this->text, 'more')) {
|
||||||
|
// Remove more tag
|
||||||
|
return preg_replace('/(.*)\[\s*more\s*\](.*)/is', '$1$2', $this->text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only show text before more tag
|
||||||
|
$text = preg_replace('/(.*)(\s*\[\s*more\s*\].*)/is', '$1', $this->text);
|
||||||
|
return rtrim($text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,26 @@ class NewsTest extends ModelTest
|
||||||
$this->assertEquals($comment->toArray(), $news->comments->first()->toArray());
|
$this->assertEquals($comment->toArray(), $news->comments->first()->toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests that text more tags work
|
||||||
|
*
|
||||||
|
* @covers \Engelsystem\Models\News::text
|
||||||
|
*/
|
||||||
|
public function testTextMore(): void
|
||||||
|
{
|
||||||
|
$news = new News($this->newsData);
|
||||||
|
|
||||||
|
$news->text = "Foo\n\n\nBar";
|
||||||
|
$this->assertEquals("Foo\n\n\nBar", $news->text);
|
||||||
|
$this->assertEquals("Foo\n\n\nBar", $news->text());
|
||||||
|
$this->assertEquals("Foo\n\n\nBar", $news->text(false));
|
||||||
|
|
||||||
|
$news->text = "Foo\n[more]\nBar";
|
||||||
|
$this->assertEquals("Foo\n[more]\nBar", $news->text);
|
||||||
|
$this->assertEquals("Foo\n\nBar", $news->text());
|
||||||
|
$this->assertEquals('Foo', $news->text(false));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that creating a News item with all fill values works.
|
* Tests that creating a News item with all fill values works.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue