Add home’s cover carousel
This is a separate carousel from the one displayed at the bottom with
location info; it is, i suppose, a carousel for the hero image.
For the database, it works exactly as the home carousel, but on the
front had to use AlpineJS instead of Slick because it needs to show a
text popping up from the bottom when the slide is show, something i do
not know how to do in Slick.
It now makes no sense to have the carousel inside the “nature” section,
because the heading is no longer in there, and moved it out into a new
“hero” div.
Since i now have two carousels in home, i had to add additional
attributes to carousel.AdminHandler to know which URL to point to when
POSTing, PUTting, or redirecting.
2024-01-16 20:05:52 +00:00
|
|
|
|
-- Test translate_cover_carousel_slide
|
|
|
|
|
set client_min_messages to warning;
|
|
|
|
|
create extension if not exists pgtap;
|
|
|
|
|
reset client_min_messages;
|
|
|
|
|
|
|
|
|
|
begin;
|
|
|
|
|
|
|
|
|
|
select plan(13);
|
|
|
|
|
|
|
|
|
|
set search_path to camper, public;
|
|
|
|
|
|
|
|
|
|
select has_function('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text']);
|
|
|
|
|
select function_lang_is('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'sql');
|
|
|
|
|
select function_returns('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'void');
|
|
|
|
|
select isnt_definer('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text']);
|
|
|
|
|
select volatility_is('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'volatile');
|
|
|
|
|
select function_privs_are('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'guest', array[]::text[]);
|
|
|
|
|
select function_privs_are('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'employee', array[]::text[]);
|
|
|
|
|
select function_privs_are('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'admin', array['EXECUTE']);
|
|
|
|
|
select function_privs_are('camper', 'translate_cover_carousel_slide', array['integer', 'text', 'text'], 'authenticator', array[]::text[]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set client_min_messages to warning;
|
|
|
|
|
truncate cover_carousel_i18n cascade;
|
|
|
|
|
truncate cover_carousel cascade;
|
|
|
|
|
truncate media cascade;
|
|
|
|
|
truncate media_content cascade;
|
|
|
|
|
truncate company cascade;
|
|
|
|
|
reset client_min_messages;
|
|
|
|
|
|
2024-02-27 18:45:47 +00:00
|
|
|
|
insert into company (company_id, business_name, vatin, trade_name, phone, email, web, address, city, province, postal_code, rtc_number, tourist_tax, tourist_tax_max_days, country_code, currency_code, default_lang_tag)
|
|
|
|
|
values (1, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', '', 60, 7, 'ES', 'EUR', 'ca')
|
Add home’s cover carousel
This is a separate carousel from the one displayed at the bottom with
location info; it is, i suppose, a carousel for the hero image.
For the database, it works exactly as the home carousel, but on the
front had to use AlpineJS instead of Slick because it needs to show a
text popping up from the bottom when the slide is show, something i do
not know how to do in Slick.
It now makes no sense to have the carousel inside the “nature” section,
because the heading is no longer in there, and moved it out into a new
“hero” div.
Since i now have two carousels in home, i had to add additional
attributes to carousel.AdminHandler to know which URL to point to when
POSTing, PUTting, or redirecting.
2024-01-16 20:05:52 +00:00
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
insert into media_content (media_type, bytes)
|
|
|
|
|
values ('text/plain', 'hello, world!')
|
|
|
|
|
, ('image/svg+xml', '<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>')
|
|
|
|
|
, ('image/x-xpixmap', 'static char *s[]={"1 1 1 1","a c #ffffff","a"};')
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
insert into media (media_id, company_id, original_filename, content_hash)
|
|
|
|
|
values (5, 1, 'text.txt', sha256('hello, world!'))
|
|
|
|
|
, (6, 1, 'image.svg', sha256('<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'))
|
|
|
|
|
, (7, 1, 'cover4.xpm', sha256('static char *s[]={"1 1 1 1","a c #ffffff","a"};'))
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
insert into cover_carousel (media_id, caption)
|
|
|
|
|
values (5, 'Source caption')
|
|
|
|
|
, (6, 'Another caption')
|
|
|
|
|
, (7, 'N/A')
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
insert into cover_carousel_i18n (media_id, lang_tag, caption)
|
|
|
|
|
values (5, 'en', 'Target caption')
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
select lives_ok(
|
|
|
|
|
$$ select translate_cover_carousel_slide(5, 'ca', 'Traducció') $$,
|
|
|
|
|
'Should be able to translate a carousel slide'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
select lives_ok(
|
|
|
|
|
$$ select translate_cover_carousel_slide(6, 'es', null) $$,
|
|
|
|
|
'Should be able to “translate” a carousel slide to the empty string'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
select lives_ok(
|
|
|
|
|
$$ select translate_cover_carousel_slide(5, 'en', 'Not anymore') $$,
|
|
|
|
|
'Should be able to overwrite a slide’s translation'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
select bag_eq(
|
|
|
|
|
$$ select media_id, lang_tag, caption from cover_carousel_i18n $$,
|
|
|
|
|
$$ values (5, 'ca', 'Traducció')
|
|
|
|
|
, (5, 'en', 'Not anymore')
|
|
|
|
|
, (6, 'es', '')
|
|
|
|
|
$$,
|
|
|
|
|
'Should have all three slides'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
select *
|
|
|
|
|
from finish();
|
|
|
|
|
|
|
|
|
|
rollback;
|