Создание гиперссылки в Приморье с изображением в качестве интерактивного элемента - PullRequest
3 голосов
/ 01 февраля 2020

Я создаю веб-сайт с использованием Instantiation VisualAge Smalltalk Seaside. Я знаю о следующем.

renderContentOn: html
  html anchor
    url: 'http://www.seaside.st';
    with: 'Visit the Seaside'.

Тем не менее, я хочу сделать ссылку, где изображение является кликабельным элементом и некоторый описательный текст ниже. На данный момент я делаю это в html и заставляю Seaside визуализировать код. Я хотел бы использовать Seaside для создания предмета, как описано выше, но не могу найти никаких подсказок. Код, который я использую, выглядит следующим образом:

html html: '<a
href="http://www.mywebsite.com:8080/Show some details?', imagePath, '"><img
style="border: 0px solid ;  
  text-align: right;height: 130px;" alt=""
src=" http://www.mywebsite.com:8080/images/',  imagePath, '"></a>
<br> some text'

Есть ли лучший (и более Smalltalk) способ?


«Показать некоторые детали» - это моя небрежная печать. Конечно, это допустимое имя класса.

Однако я пробовал это, но следуя тексту html: 'Some text'. ' который должен просто отображать текст, он также представляет текущий класс страницы - Итак, если мой класс был DPAClassName, то URL: 'http://www.mywebsite.com: 8080 / Показать некоторые детали ?, imagePath'; становится

url: 'http://www.mywebsite.com: 8080 / DPAClassName ?, imagePath';

на дисплее отображается текст «Некоторый текст, но следующим образом:« Некоторый текст » DPAClassName

1 Ответ

7 голосов
/ 02 февраля 2020

Ключ в сообщении with: отправляется на любой тег (anchor, image, paragraph и т. Д. c.), Вы можете передать любой визуализируемый возражать против этого. В вашем первом примере вы передали String, но вы также можете передать BlockClosure или любой другой объект, который понимает renderOn:.

Итак, в итоге, эквивалент того, что вы хотите, будет:

    html anchor
      url: 'http://www.mywebsite.com:8080/Show some details?, imagePath';
      with: [
         html image
           style: 'border: 0; height: 130px;'
           url: 'http://www.mywebsite.com:8080/images/',  imagePath ].
    html break.
    html text: 'Some text'.

В качестве примечания, я думаю, что часть URI Show some details сомнительна, так же как и передача imagePath без именования параметра. Но это, безусловно, что-то выходящее за рамки вашего вопроса.

...