プロジェクト

全般

プロフィール

Enhancement(機能追加・改善) #3203

activity/post.json の images パラメータを複数枚の画像アップロードに対応させる

Youichi Kimura11年以上前に追加. ほぼ7年前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-09-14
期日:
進捗率:

0%


説明

Overview (現象)

#3064 で実装された activity/post.json の images パラメーターは、images と複数形の名前であるにもかかわらず複数枚の画像を指定することが出来ない。そのため、images パラメーターが複数枚の画像を受け付けるように修正を施す。

Spec (仕様)

activity/post.json のアクションにて、images が配列であっても受け付けるように修正する。
また、activity/search.json のレスポンスに追加されている image_url, image_large_url は、アクティビティに複数枚の画像が添付されていることを考慮していないため、これも配列で返すように変更を行う。


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #3400: activity/post.json の images パラメータを複数枚の画像アップロードに対応させる Fixed(完了) 2012-09-14
ブロック元 OpenPNE 3 - Enhancement(機能追加・改善) #3064: activity/post.json の画像投稿対応 Won't fix(対応せず) 2012-06-01

関係しているリビジョン

リビジョン 8064b916 (差分)
Youichi Kimura11年以上前に追加

accept multiple images in activity/post.json (fixes #3203)

リビジョン 502a85ad (差分)
Youichi Kimura10年以上前に追加

add testcases for activity/post.json with multiple images (refs #3203)

リビジョン b1c33881 (差分)
Youichi Kimura10年以上前に追加

add support for multiple activity images in activity/*.json template (fixes #3203)

リビジョン 914b9659 (差分)
Youichi Kimura10年以上前に追加

add helper function for ActivityImage (refs #3203)

リビジョン c7ce43f0 (差分)
Youichi Kimura10年以上前に追加

small change of the name in activity/*.json response (fixes #3203)

履歴

#1 Youichi Kimura11年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 8064b916465136cfdd8056cb23a012e60021145d で適用されました。

#2 Youichi Kimura10年以上前に更新

  • 説明 を更新 (diff)
  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

#3064note-7 で指摘されている

  • API の応答は 固定で1枚だけ画像のURLを出力するような実装ですが、複数枚投稿できるのであれば、複数枚出力した方が良くないでしょうか。
    • 1枚だけ出力するような仕様に意図的にするのであれば、例えば一番新しい画像のURLを出力する といった対応にしたほうがよいのではないかと思います。

について、複数枚アップロードの実装を行った当チケットで対応する。

#3 Youichi Kimura10年以上前に更新

  • トラッカーBug(バグ) から Enhancement(機能追加・改善) に変更
  • 題名activity/post.json の images パラメータが複数枚の画像アップロードに対応していない から activity/post.json の images パラメータを複数枚の画像アップロードに対応させる に変更
  • 説明 を更新 (diff)

#4 Youichi Kimura10年以上前に更新

複数枚の画像に対応した activity/*.json のレスポンスは下記のような形式で実装します。

{
  "status": "success",
  "data": [
    {
      "id": "1058",
      "member": { ... },
      "body": "hogehoge",
      "body_html": "hogehoge",
      "uri": null,
      "source": "API",
      "source_uri": null,
      "images": [
        {
          "small_uri": "http://localhost/cache/img/gif/w48_h48/ac_1_cb7fd0a95e1e24ac16a9f81c088cfe9863fd15b8_gif.gif",
          "full_uri": "http://localhost/cache/img/gif/w_h/ac_1_cb7fd0a95e1e24ac16a9f81c088cfe9863fd15b8_gif.gif" 
        },
        {
          "small_uri": "http://localhost/cache/img/jpg/w48_h48/ac_1_75c975ed014d8e77c8d31619038b2a06f2edf9f9_jpg.jpg",
          "full_uri": "http://localhost/cache/img/jpg/w_h/ac_1_75c975ed014d8e77c8d31619038b2a06f2edf9f9_jpg.jpg" 
        }
      ],
      "created_at": "Thu, 12 Sep 2013 07:59:51 +0000" 
    }
  ]
}

#5 Youichi Kimura10年以上前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

更新履歴 b1c33881a08af31718adabe54c97713c23d99084 で適用されました。

#6 Shinichi Urabe10年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更
  • ActivityData モデル内に、画像 URL の一覧を配列形式で返すメソッドを追加したほうがよいかもしれないです。
    • apps/pc_frontend/modules/default/templates/_activityRecord.php でも似た処理がありますので、共通化ができるかと思います。(メソッドに対して absolute を引数で指定できるようにしておいたほうがよいかもしれません) 共通化の対応する場合、別チケットになるかと思います。
  • full_uri, small_uri について、 full_uri という言葉から、full は uri に対する形容詞のように見えてしまうので絶対 URL をイメージしてしまいます。small_uri も絶対 URL ですので、 full_uri の名称が適切ではないように思います。名称は変えた方がよいかもしれません 。(案を書いていますが、参考まで)

$array = array(
  'image_urls' => array(
    array(
      'full_size' => 'http://xxxxx/full.jpg',
      'small_size' => 'http://xxxxx/small.jpg',
    ),  
    array(
      'full_size' => 'http://xxxxx/full2.jpg',
      'small_size' => 'http://xxxxx/small2.jpg',
    )   
  )
);

#7 Youichi Kimura10年以上前に更新

参考メモ

apps/pc_frontend/modules/default/templates/_activityRecord.php の記述:

<?php if ($images[$i]->getFileId()): ?>
<?php echo op_image_tag_sf_image($images[$i]->getFile(), array('size' => '48x48')) ?>
<?php else: ?>
<?php echo op_image_tag($images[$i]->getUri(), array('width' => 48, 'height' => 48)) ?>
<?php endif; ?>

apps/api/lib/helper/opJsonApiHelper.php の記述:

    if (!is_null($activityImage->file_id))
    {
      $images[] = array(
        'small_uri' => sf_image_path($activityImage->getFile(), array('size' => '48x48'), true),
        'full_uri' => sf_image_path($activityImage->getFile(), array(), true),
      )
    }
    else
    {
      $images[] = array(
        'small_uri' => $activityImage->uri,
        'full_uri' => $activityImage->uri,
      )
    }

#8 Youichi Kimura10年以上前に更新

こんな感じのヘルパー関数を opActivityHelper.php に実装してみる

function op_activity_image_uri($activityImage, $options = array(), $absolute = false)
{
  if ($activityImage->relatedExists('File'))
  {
    return sf_image_path($activityImage->File, $options, $absolute);
  }
  else
  {
    return $activityImage->uri;
  }
}

function op_activity_image_tag($activityImage, $options = array())
{
  if ($activityImage->relatedExists('File'))
  {
    return op_image_tag_sf_image($activityImage->File, $options);
  }
  else
  {
    return op_image_tag($activityImage->uri, $options);
  }
}

#9 Youichi Kimura10年以上前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

更新履歴 c7ce43f00f8e5b1c613673b59038692cdb26c317 で適用されました。

#10 Youichi Kimura10年以上前に更新

note-6 で指摘された _activityRecord.php の重複部分については 914b96596d77b72d9b1a981d33159d1b4cd82b17 の通り、ヘルパー関数として実装しました。

#11 Shinichi Urabe10年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです

#12 Youichi Kimura10年以上前に更新

  • ステータスPending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
  • 進捗率70 から 50 に変更

更新履歴 8f1bae7204cc09f9bd9bd75f6b423199f6ce5e1d で適用されました。

#13 Youichi Kimura10年以上前に更新

  • ステータスPending Review(レビュー待ち) から New(新規) に変更
  • 進捗率50 から 0 に変更

すみません、バックポート時にコミットメッセージ修正し損ねました。一旦ステータス戻します

#14 Youichi Kimura10年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#15 Shinichi Urabe10年以上前に更新

  • ステータスAccepted(着手) から Pending Testing(テスト待ち) に変更
  • 進捗率0 から 70 に変更

コミットメッセージによりステータスが変わった状態ですので、ステータスを「テスト待ち」に戻します。

#16 isao sanoほぼ7年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

OpenPNE 3.8.8 にて対応済みであったため、対応せずとします。

#17 isao sanoほぼ7年前に更新

  • ステータスPending Merge(マージ待ち) から Won't fix(対応せず) に変更
  • 進捗率80 から 0 に変更

他の形式にエクスポート: Atom PDF