プロジェクト

全般

プロフィール

Bug(バグ) #3531

未完了

opLikePluginと同時使用するとアップロードダイアログが表示されない

誠二 天重 さんがほぼ11年前に追加. ほぼ11年前に更新.

ステータス:
Pending Review(レビュー待ち)
優先度:
Normal(通常)
担当者:
開始日:
2013-12-24
期日:
進捗率:

50%

予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Yes (はい)

説明

現象

opLikePluginとopUploadFilePluginを同時使用すると,ファイルアップロード用ダイアログが表示されなくなる。
なお,apiを利用してファイルアップロードは可能。

bootstrap参考URL
http://getbootstrap.com/javascript/#modals

原因

原因としては,opUploadFilePlugin と opLikePlugin のどちらもが bootstrap-modal.js を呼び出しており,かつ,どちらもが bootstrap-modal.js に用意されているAPIを利用しているため,二重にイベントが登録されている模様。

具体的には,opUploadFilePlugin の apps/pc_frontend/modules/f/templates/_fMenu.php の35行目

    <li><a href="#file-uploadmodal" data-toggle="modal">アップロード</a></li>

上記の data-toggle=modal が bootstrap-modal.js の以下の箇所で,クリックイベントとして登録される。
  $(function () {
    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
      var $this = $(this)
        , href = $this.attr('href')
        , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
        , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())

      e.preventDefault()

      $target
        .modal(option)
        .one('hide', function () {
          $this.focus()
        })
    })
  })

opLikePluginを入れている場合,(おそらく)opUploadFilePluginで一度イベント登録されたあと,opLikePluginの読み込みのタイミングで再度イベント登録され(どちらが先に読まれているかは不明),一つのクリックイベントに対して二度toggle処理される結果として表示されない,という筋になっていそう。

修正方針

opUploadFilePlugin, opLikePluginともに,bootstrap-modal.js に用意されたapi(data-toggle="modal")を利用せず,自前でイベント登録する,という方針。

修正箇所

apps/pc_frontend/modules/f/templates/_fMenu.php
35:    <li><a href="#file-uploadmodal" data-toggle="modal">アップロード</a></li>

関連するチケット 1 (0件未完了1件完了)

関連している opLikePlugin - Bug(バグ) #3532: opLikePluginとopUploadFilePluginを同時使用すると,ファイルアップロード用ダイアログが表示されなくなる。Fixed(完了)誠二 天重2013-12-24

操作

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