Crieitの開発

2019-01-05に作成

Crieitの開発ログ。

pablo.png

Crieitの開発 | 進捗ノート からの続き。

Crieitの新しい ボード機能 のテストも兼ねて運用中。上部ナビから誰でも作成できます。

所有者限定モードのためこのボードには投稿できません

ボード内投稿のシェア本文が使いづらい感じだったので修正した。(ボード名+本文→本文+ボード名)

個人的にボードへの移動がすごく面倒だったのでグローバルナビにボード一覧を5件まで表示するようにした。

ボード内投稿のいいね一覧を作成した。

動線は作ってないけどボード一覧を作ってみた。ボード増えて過疎感がなくなったら導線つけようかと思ったけどカードがでかいしもう問題なさそうかな?

ボード一覧   Crieit.png

記事入力画面で本文の文字数を表示するようにした。MarkdownではなくHTMLの状態でタグを削除した文字数をカウントしているので恐らく実際に表示する文字数に近いはず…。

投稿詳細にArticleの構造化マークアップを入れてみた。しかし実際にどうやって自分で検索結果で確認できる日が来るんだろう…。

よく分かってないけどこんなJSON

        return [
            '@context' => 'http://schema.org',
            '@type' => 'Article',
            'mainEntityOfPage' => [
                '@type' => 'WebPage',
                '@id' => config('app.url') . "/posts/{$this->unique_id}",
            ],
            'headline' => $this->name,
            'image' => $images,
            'datePublished' => $this->created_at->format('c'),
            'dateModified' => $this->updated_at->format('c'),
            'author' => [
                '@type' => 'Person',
                'name' => $this->user->name,
            ],
            'publisher' => [
                '@type' => 'Organization',
                'name' => 'Crieit',
                'logo' => [
                    '@type' => 'ImageObject',
                    'url' => config('app.url') . '/img/card.png',
                ],
            ],
            'description' => $this->getDescription(107),
        ];

ボード内の投稿にコメントできるようにした。コメントがあるとこんな感じでリンクが付く。引き続き通知機能を作らないとコメントに気づけないので困りそう…。

あとコメントフォーム周りの広告が非常に邪魔な感じになってるので調整する。

heading test   Laravel.png

匿名投稿をとりあえずリリースしておいた。また説明記事にはするけどボードの設定で匿名許可にすれば匿名投稿できるようになる。気軽に意見募集してよ、みたいな時に使える。

匿名許可ボード   Laravel.png

匿名機能できたので夜リリースする。しかしボードが一つ作られ、ボード内投稿が一つ作られるだけでもまだ気づきがあって重要なタスクが増えていっている状態。

とりあえずボード関連の匿名設定のとこだけやった(開発環境)。あとはまた後日表示を対応してテストを追加していく。

ボードの場合コードの折返しがあったので修正した。そのうちコードがある&画像がない場合はコードがOGPになるようにしたいな。

ボード内の投稿はパーマリンク的なのがあるんだけど、内容が短すぎるやつ(100文字以下とか)の場合はnoindexを入れるようにした。

管理画面のパッケージを入れた。ついに脆弱性を入れてしまった…。

ボード表示のテストを作った。1つ目がログインなし公開ボード。2つ目がログインなしプライベートボード。3つ目がログインあり自分のプライベートボード。4つ目がログインあり他者のプライベートボード。

どれもマニュアル通りで目新しいことはしてない。

    public function testShow()
    {
        $board = factory(Board::class)->create();

        $response = $this->get("/boards/{$board->unique_id}");
        $response->assertStatus(200);
    }

    public function testShowPrivate()
    {
        $board = factory(Board::class)->create(['private' => true]);

        $response = $this->get("/boards/{$board->unique_id}");
        $response->assertStatus(500);
    }

    public function testShowMyPrivate()
    {
        $board = factory(Board::class)->create(['private' => true]);

        $response = $this->actingAs($board->user)->get("/boards/{$board->unique_id}");
        $response->assertStatus(200);
    }

    public function testShowOtherUserPrivate()
    {
        $board = factory(Board::class)->create(['private' => true]);
        $otherUser = factory(User::class)->create();

        $response = $this->actingAs($otherUser)->get("/boards/{$board->unique_id}");
        $response->assertStatus(404);
    }

スマホのログイン後トップページからも簡単にボードページに移動できるようにした。

dashboard_boards.png