Rails 3: замена изображения макета для флеш-анимации - PullRequest
0 голосов
/ 11 февраля 2011

Итак, у меня есть помощник, который я использую, чтобы поменять изображение заголовка на другое изображение, которое, кажется, работает нормально. Это мой помощник.

def header_image_tag
  @header_image ||= 'headers/image.png'
  image_tag @header_image
end

def header_image(image_path)
  @header_image = image_path
end

И в моем представлении я использую.

<% header_image('headers/newimage.png') %>

Теперь вот сложная часть, которую я хотел бы сделать, вместо того, чтобы заменить ее на картинку, которую я хотел бы поменять во флэш-баннере.

Я попытался сделать это, поменяв местами код вместо использования sanitize (который работает только без использования тегов объектов). Ниже первый помощник для этого ...

def text_banner_tag
  @text_banner ||= 'textBanner.png'
  if @text_banner != "textBanner.png"
  else
    image_tag @text_banner
  end
end

def text_banner(object_code)
  @text_banner = object_code
end

и код на мой взгляд ...

<% text_banner(sanitize('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="970" height="48" id="FlashID" title="textbanner" alt="text banner">
      <param name="movie" value="/flash/textbanner.swf">
      <param name="quality" value="high">
      <param name="wmode" value="transparent">
      <param name="swfversion" value="6.0.65.0">
      <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. -->
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="/flash/textbanner.swf" width="970" height="48">
        <!--<![endif]-->
        <param name="quality" value="high">
        <param name="wmode" value="transparent">
        <param name="swfversion" value="6.0.65.0">
        <param name="expressinstall" value="/Scripts/expressInstall.swf">
        <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. -->
        <div>
          <%= image_tag("textBanner.png", :size => "970x48", :alt => "text banner", :border => "0") %>
        </div>
        <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>')) %>

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 12 февраля 2011

Если немного покопаться, для тех, кто может столкнуться с этим в будущем и хочет внедрить его на своем собственном сайте, это то, что я нашел и прекрасно работает.

В основном вам нужно добавить набор тегов и набор атрибутов для sanitize, так как sanitize использует только базовый html, в котором отсутствуют недостающие элементы, например, которые очень необходимы для flash.

Вот что я сделал в помощнике:

  def text_banner_tag
    @text_banner ||= '<img src="/images/textBanner.png">'
      tags = %w(a acronym b strong i img em li ul ol h1 h2 h3 h4 h5 h6 object param div blockquote br cite sub sup ins p)
      sanitize(@text_banner, :tags => tags, :attributes => %w(href classid title width height id alt data name value src))
  end

  def text_banner(object_code)
    @text_banner = object_code
  end

В макете вы называете баннер с помощью:

<%= text_banner_tag %>

И в представлении, для которого вы хотите отобразить флэш-баннер, добавьте его в верхнюю часть представления:

<% text_banner('<object> <param> <div>text for no flash</div> </object>') %>

обязательно заполните все, что вам нужно для flash-объекта.

Вы также можете использовать это для реализации множества других дополнений

Предупреждение безопасности только будьте осторожны, если вы передаете это использование пользователям, которые заполняют формы, допускающие код.

...