# Создание фоток ## SQL ``` sql select "ID_ARTIST", "NICKNAME", "DESCRIPTION", "MIMETYPE", "FILENAME", apex_util.prepare_url( p_url => 'f?p=' || :app_id || ':5:' || :app_session || '::::P5_ID_ARTIST:' || ID_ARTIST ) icon_link, decode( nvl(dbms_lob.getlength(IMAGE), 0), 0, null, '<img alt=" ' || NICKNAME || ' " title=" ' || NICKNAME || ' " style="border: 2px; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P5_IMAGE', ID_ARTIST) || ' " height="75" width="75" />' ) detail_img, apex_util.get_blob_file_src('P5_IMAGE', ID_ARTIST) detail_img_no_style from "ARTISTS" ``` ## Делаю Для: ```sql select "ID_ALBUM", "NAME_ALBUM", "DATE", sys.dbms_lob.getlength("IMAGE") "IMAGE", "MIMETYPE", "FILENAME" from "ALBUM" ``` Это: ```sql select "ID_ALBUM", "NAME_ALBUM", "DATE", "MIMETYPE", "FILENAME", apex_util.prepare_url( p_url => 'f?p=' || :app_id || ':3:' || :app_session || '::::P3_ID_ALBUM:' || ID_ALBUM ) icon_link, decode( nvl(dbms_lob.getlength(IMAGE), 0), 0, null, '<img alt=" ' || NAME_ALBUM || ' " title=" ' || NAME_ALBUM || ' " style="border: 2px; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P3_IMAGE', ID_ALBUM) || ' " height="75" width="75" />' ) detail_img, apex_util.get_blob_file_src('P3_IMAGE', ID_ALBUM) detail_img_no_style from "ALBUM" ``` <!-- Музыка: ```sql select MUSIC.ID, sys.dbms_lob.getlength("TRACK")"TRACK", "BTRACK", "MIMETYPE", "FILE_NAME", "LAST_UPDATE", apex_util.prepare_url(p_url=>'f?p='||:app_id||':25:'||:app_session|| '::::P25_ID:'|| MUSIC.ID) track_link, decode(nvl(dbms_lob.getlength(TRACK),0),0,null, '<audio controls > <source src="' || apex_util.get_blob_file_src('P25_TRACK', MUSIC.ID) || '" type="audio/mpeg"> </audio>' ) detail_track, apex_util.get_blob_file_src('P25_TRACK',MUSIC.ID) detail_track_no_style from "MUSIC" ``` test ```sql -- select "SONG_ID","NAME_SONG", -- sys.dbms_lob.getlength("TRACK")"TRACK","MIMETYPE","FILENAME",sys.dbms_lob.getlength("COVER") -- "COVER","COVER_MIMETYPE","COVER_FILENAME"from "SONGS" select "SONG_ID", "NAME_SONG", "MIMETYPE", "FILENAME", apex_util.prepare_url(p_url=>'f?p='||:app_id||':9:'||:app_session|| '::::P9_SONG_ID:'|| SONG_ID) track_link, decode(nvl(dbms_lob.getlength(TRACK),0),0,null, '<audio controls > <source src="' || apex_util.get_blob_file_src('P9_TRACK', SONG_ID) || '" type="audio/mpeg"> </audio>' ) detail_track, apex_util.get_blob_file_src('P9_TRACK', SONG_ID) detail_track_no_style "COVER_MIMETYPE", "COVER_FILENAME", apex_util.prepare_url( p_url => 'f?p=' || :app_id || ':9:' || :app_session || '::::P9_SONG_ID:' || SONG_ID ) icon_link, decode( nvl(dbms_lob.getlength(COVER), 0), 0, null, '<img alt=" ' || NAME_SONG || ' " title=" ' || NAME_SONG || ' " style="border: 2px; -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P9_COVER', SONG_ID) || ' " height="75" width="75" />' ) detail_img, apex_util.get_blob_file_src('P3_IMAGE', SONG_ID) detail_img_no_style from "SONGS" ``` --> ## Скрываю колонки Оставляю Detail Img ## ICON VIEW | APEX | Столбцы | |------------------|--------------------------| | Link Column | ICON_LINK | | Source Column | DETAIL_IMG_NO_STYLE | | Label Column | NAME_ALBUM | | Image Attributes | width="200" height="200" | ## DETAIL VIEW TODO ## Настройка страницы отчёта TODO # Cтраницы формы ## Настройка страницы формы <!-- **DIALOG:** Maximum Width 1000 --> **CSS:** Inline CSS ```css img { width: 100%; max-width: 100%; height: auto; } ``` ## Настройка колонки P$_IMAGE **STORAGE:** | APEX | Название колонок | |------------------|------------------| | MIME Type Column | MIMETYPE | | Filename Column | FILENAME | ## Добавление фото второй колонкой (Область изображения) Components -> Create region Переносим созданный регион выше формы (или делаем **Layout**.Sequence = 5) **Appearance:** CSS Classes = imageItem **Server-side Condition:** Type = Function Body ```sql declare begin if :P3_ID_ALBUM is not null then for c1 in (select nvl(dbms_lob.getlength(IMAGE),0) A from ALBUM where ID_ALBUM = :P3_ID_ALBUM) loop if c1.A > 0 then return true; end if; end loop; end if; return false; end; ``` ### Для отображения в две колонки в элементе формы: **Layout:** Start New Row = False ### Создаём Page Item, для отображения фото, как потомок этого региона (области изображения) Делаем отображение изображения, затем **Source:** | Apex | Делаем | |-------------|----------------| | Form Region | Выбираем форму | | Column | IMAGE | | Data Type | BLOB | **Server-side Condition** Type = Rows returned ```sql SELECT mimetype from ALBUM WHERE ID_ALBUM = :P3_ID_ALBUM AND mimetype like 'image%' ``` ### Создаём кнопу, для удаления фото, как потомок этого региона (области изображения) **Identification:** Button Name = DELETE_IMG Label = Удалить фото **Layout** Region = Обложка альбома Position = Copy **Appearance:** Button Template = Icon Hot = True Icon = fa-trash **Behavior:** Action = Redirect to URL Target = javascript:apex.confirm('Вы уверены, что хотите удалить это изображение? Если вы продолжите, оно больше не будет доступно для просмотра другими пользователями.','DELETE_IMG'); ### Создаём процесс для кнопки Processing -> Create Process **Identification:** Name = Delete Image **Source:** ```sql update ALBUM set IMAGE = null, MIMETYPE = null, FILENAME = null where ID_ALBUM = :P3_ID_ALBUM; ``` **Execution:** Sequence = 15 **Success Message:** Изображение удалено **Server-side Condition:** When Button Pressed = DELETE_IMG # Кнопка - ссылка class="t-Button t-Button-hot t-Button-stretch t-Button-simple t- t-Button-small" # Телефон 8 977 179 17 43 999G999G999G999G999G999G9G999G999G99G90