├── img
├── basic.png
├── hero.png
├── sidebar.png
├── variables.png
├── sidebar-hero.png
├── global-variables.png
├── mobile-basic-hero.png
└── mobile-sidebar-sidebar-hero.png
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── rwd_email.pks
└── rwd_email.pkb
/img/basic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/basic.png
--------------------------------------------------------------------------------
/img/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/hero.png
--------------------------------------------------------------------------------
/img/sidebar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/sidebar.png
--------------------------------------------------------------------------------
/img/variables.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/variables.png
--------------------------------------------------------------------------------
/img/sidebar-hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/sidebar-hero.png
--------------------------------------------------------------------------------
/img/global-variables.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/global-variables.png
--------------------------------------------------------------------------------
/img/mobile-basic-hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/mobile-basic-hero.png
--------------------------------------------------------------------------------
/img/mobile-sidebar-sidebar-hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vincentmorneau/oracle-rwd-email-template-api/HEAD/img/mobile-sidebar-sidebar-hero.png
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear on external disk
35 | .Spotlight-V100
36 | .Trashes
37 |
38 | # Directories potentially created on remote AFP share
39 | .AppleDB
40 | .AppleDesktop
41 | Network Trash Folder
42 | Temporary Items
43 | .apdisk
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Oracle Responsive Email Templates
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #Oracle Responsive Email Templates
2 | Here is an API for building Responsive Web Design Email Templates. Written in PL/SQL for Oracle development.
3 |
4 | ##Changelog
5 | ####1.1.0
6 | - Templates are now parameterized
7 | - More code refactoring
8 |
9 | ####1.0.0
10 | - **Decoupled the API from the send mail feature. Now it returns a CLOB value. Use your own email sending package.**
11 | - Added new global variables
12 | - New comments / documentation all over the API
13 | - Huge refactoring
14 | - Added support for columns and sub columns from 1 to 12
15 | - Added more options to panels
16 | - Added more options to typography
17 | - Added more options to buttons
18 |
19 | ####0.1.0 - Initial Release
20 |
21 | ##Install
22 | - Run script `rwd_email.pks` and `rwd_email.pkb` in your schema
23 |
24 | ##Run (example with apex_mail)
25 | ```language-sql
26 | DECLARE
27 | l_body clob;
28 | l_content rwd_email.t_content;
29 | BEGIN
30 | /******************************
31 | Initialize your content in here
32 | ******************************/
33 | l_content.logo_url := 'http://insum.ca/ia/swinsum/build/assets/img/logo-insum.png';
34 | l_content.title := 'SIDEBAR HERO';
35 | l_content.welcome_title := 'Vincent,';
36 | l_content.sub_welcome_title := 'Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.';
37 | l_content.big_picture_url := 'http://insum.ca/ia/swinsum/build/assets/img/bg1.jpg';
38 | l_content.top_paragraph := 'Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.';
39 | l_content.bottom_paragraph := 'A small river named Duden flows by their place and supplies it with the necessary regelialia. This link! »';
40 | l_content.bottom_paragraph_subtitle := ' This is a note.';
41 | l_content.bottom_paragraph := 'A small river named Duden flows by their place and supplies it with the necessary regelialia. This link! »';
42 | l_content.left_paragraph := 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et. Lorem ipsum dolor sit amet.';
43 | l_content.right_header := 'Header Thing';
44 | l_content.right_sub_header := 'Sub-head or something';
45 | l_content.social_title := 'Connect With Us:';
46 | l_content.contact_info := 'Contact Info:';
47 | l_content.contact_phone := 'Phone: 514.387.1670';
48 | l_content.contact_email := 'Email: vmorneau@insum.ca';
49 | l_content.footer_links := 'Terms | Privacy | Unsubscribe';
50 |
51 | /*l_body := rwd_email.basic(l_content);
52 | l_body := rwd_email.hero(l_content);
53 | l_body := rwd_email.sidebar(l_content);*/
54 | l_body := rwd_email.sidebar_hero(l_content);
55 |
56 | apex_mail.send (
57 | p_to => 'to@email.com',
58 | p_from => 'from@email.com',
59 | p_body => l_body,
60 | p_body_html => l_body,
61 | p_subj => 'This is a responsive email');
62 |
63 | apex_mail.push_queue;
64 | END;
65 | ```
66 |
67 | ---
68 |
69 | Inspired by Zurb at http://zurb.com/ink/, wrapped in PL/SQL.
70 |
71 | You can help by filling issues through Github.
--------------------------------------------------------------------------------
/rwd_email.pks:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE rwd_email IS
2 |
3 | /**********************************************
4 | ***********************************************
5 | ***********************************************
6 | CONSTANTS
7 | ***********************************************
8 | ***********************************************
9 | **********************************************/
10 | g_header_background_color constant varchar2(25) := '#4A96C9';
11 | g_primary_button_bgcolor constant varchar2(25) := '#4A96C9';
12 | g_primary_button_text_color constant varchar2(25) := '#FFFFFF';
13 | g_text_color constant varchar2(25) := '#222222';
14 | g_body_background constant varchar2(25) := 'transparent';
15 | g_font_family constant varchar2(100) := '''Helvetica'', ''Arial'', sans-serif';
16 | g_line_height constant varchar2(25) := '19px';
17 | g_font_size constant varchar2(25) := '14px';
18 |
19 | /**********************************************
20 | ***********************************************
21 | ***********************************************
22 | TYPES
23 | ***********************************************
24 | ***********************************************
25 | **********************************************/
26 | type t_content is record (
27 | logo_url varchar2(4000)
28 | , title varchar2(4000)
29 | , welcome_title varchar2(4000)
30 | , sub_welcome_title varchar2(4000)
31 | , big_picture_url varchar2(4000)
32 | , top_paragraph varchar2(4000)
33 | , bottom_paragraph varchar2(4000)
34 | , bottom_paragraph_title varchar2(4000)
35 | , bottom_paragraph_subtitle varchar2(4000)
36 | , left_paragraph varchar2(4000)
37 | , right_header varchar2(4000)
38 | , right_sub_header varchar2(4000)
39 | , social_title varchar2(4000)
40 | , contact_info varchar2(4000)
41 | , contact_phone varchar2(4000)
42 | , contact_email varchar2(4000)
43 | , footer_links varchar2(4000)
44 | );
45 |
46 | /**********************************************
47 | ***********************************************
48 | ***********************************************
49 | GLOBAL STUFF
50 | ***********************************************
51 | ***********************************************
52 | **********************************************/
53 |
54 | /*
55 | Global Header
56 | */
57 | FUNCTION print_global_header return clob;
58 |
59 | /*
60 | Global CSS
61 | */
62 | FUNCTION print_global_css return clob;
63 |
64 | /*
65 | Global Body HTML tag
66 | */
67 | FUNCTION outer_body(
68 | p_content in clob)
69 | return clob;
70 |
71 | /*
72 | Global Mandatory Table to wrap the body content
73 | */
74 | FUNCTION inner_body(
75 | p_content in clob)
76 | return clob;
77 |
78 | /* Email Footer */
79 | FUNCTION print_global_end return clob;
80 |
81 | /**********************************************
82 | ***********************************************
83 | ***********************************************
84 | GRID
85 | ***********************************************
86 | ***********************************************
87 | **********************************************/
88 |
89 | /*
90 | Constrains the content to a 580px wrapper on large screens (95% on small screens) and centers it within the body.
91 | */
92 | FUNCTION print_container (
93 | p_content in clob)
94 | return clob;
95 |
96 | /*
97 | Separates each row of content.
98 | */
99 | FUNCTION print_row (
100 | p_content in clob
101 | , p_classes in varchar2 default null
102 | , p_display in varchar2 default 'block'
103 | , p_header_background_color in varchar2 default 'transparent')
104 | return clob;
105 |
106 | /*
107 | Grid Standard TD
108 | */
109 | FUNCTION print_standard_td (
110 | p_content in clob
111 | , p_align in varchar2 default 'left'
112 | , p_padding in varchar2 default '0 0 10px'
113 | , p_background_color in varchar2 default 'transparent'
114 | , p_border in varchar2 default 'none'
115 | , p_extra_attributes in varchar2 default null)
116 | return clob;
117 |
118 | /*
119 | Grid Standard TD Centered
120 | */
121 | FUNCTION print_standard_td_center (
122 | p_content in clob) return clob;
123 |
124 | /*
125 | Wraps each .columns table, in order to create a gutter between columns
126 | and force them to expand to full width on small screens.
127 | */
128 | FUNCTION print_column_wrapper (
129 | p_content in clob) return clob;
130 |
131 | /*
132 | Can be any number between one and twelve (spelled out).
133 | Used to determine how wide your .columns tables are.
134 | The number of columns in each row should add up to 12, including offset columns .
135 | */
136 | FUNCTION print_col (
137 | p_content in clob
138 | , p_number in varchar2
139 | , p_width in varchar2) return clob;
140 |
141 | /*
142 | 1 Columns
143 | */
144 | FUNCTION print_col_1 (
145 | p_content in clob) return clob;
146 |
147 | /*
148 | 2 Columns
149 | */
150 | FUNCTION print_col_2 (
151 | p_content in clob) return clob;
152 |
153 | /*
154 | 3 Columns
155 | */
156 | FUNCTION print_col_3 (
157 | p_content in clob) return clob;
158 |
159 | /*
160 | 4 Columns
161 | */
162 | FUNCTION print_col_4 (
163 | p_content in clob) return clob;
164 |
165 | /*
166 | 5 Columns
167 | */
168 | FUNCTION print_col_5 (
169 | p_content in clob) return clob;
170 |
171 | /*
172 | 6 Columns
173 | */
174 | FUNCTION print_col_6 (
175 | p_content in clob) return clob;
176 |
177 | /*
178 | 7 Columns
179 | */
180 | FUNCTION print_col_7 (
181 | p_content in clob) return clob;
182 |
183 | /*
184 | 8 Columns
185 | */
186 | FUNCTION print_col_8 (
187 | p_content in clob) return clob;
188 |
189 | /*
190 | 9 Columns
191 | */
192 | FUNCTION print_col_9 (
193 | p_content in clob) return clob;
194 |
195 | /*
196 | 10 Columns
197 | */
198 | FUNCTION print_col_10 (
199 | p_content in clob) return clob;
200 |
201 | /*
202 | 11 Columns
203 | */
204 | FUNCTION print_col_11 (
205 | p_content in clob) return clob;
206 |
207 | /*
208 | 12 Columns
209 | */
210 | FUNCTION print_col_12 (
211 | p_content in clob) return clob;
212 |
213 | /*
214 | An empty (and invisible) element added after the content element in a .columns table.
215 | It forces the content td to expand to the full width of the screen on small devices,
216 | instead of just the width of the content within the td.
217 | */
218 | FUNCTION print_expander return clob;
219 |
220 | /**********************************************
221 | ***********************************************
222 | ***********************************************
223 | SUB GRID
224 | ***********************************************
225 | ***********************************************
226 | **********************************************/
227 |
228 | /*
229 | Can be any number between one and twelve (spelled out).
230 | Used to determine how wide your .columns tables are.
231 | The number of sub columns in each row should add up to 12, including offset sub columns .
232 | */
233 | FUNCTION print_sub_col (p_content in clob
234 | , p_classes in varchar2
235 | , p_width in varchar2
236 | , p_align in varchar2 default 'left') return clob;
237 |
238 | /*
239 | 1 Sub Columns
240 | */
241 | FUNCTION print_sub_col_1 (
242 | p_content in clob
243 | , p_align in varchar2 default 'left') return clob;
244 |
245 | /*
246 | 2 Sub Columns
247 | */
248 | FUNCTION print_sub_col_2 (
249 | p_content in clob
250 | , p_align in varchar2 default 'left') return clob;
251 |
252 | /*
253 | 3 Sub Columns
254 | */
255 | FUNCTION print_sub_col_3 (
256 | p_content in clob
257 | , p_align in varchar2 default 'left') return clob;
258 |
259 | /*
260 | 4 Sub Columns
261 | */
262 | FUNCTION print_sub_col_4 (
263 | p_content in clob
264 | , p_align in varchar2 default 'left') return clob;
265 |
266 | /*
267 | 5 Sub Columns
268 | */
269 | FUNCTION print_sub_col_5 (
270 | p_content in clob
271 | , p_align in varchar2 default 'left') return clob;
272 |
273 | /*
274 | 6 Sub Columns
275 | */
276 | FUNCTION print_sub_col_6 (
277 | p_content in clob
278 | , p_align in varchar2 default 'left') return clob;
279 |
280 | /*
281 | 7 Sub Columns
282 | */
283 | FUNCTION print_sub_col_7 (
284 | p_content in clob
285 | , p_align in varchar2 default 'left') return clob;
286 |
287 | /*
288 | 8 Sub Columns
289 | */
290 | FUNCTION print_sub_col_8 (
291 | p_content in clob
292 | , p_align in varchar2 default 'left') return clob;
293 |
294 | /*
295 | 9 Sub Columns
296 | */
297 | FUNCTION print_sub_col_9 (
298 | p_content in clob
299 | , p_align in varchar2 default 'left') return clob;
300 |
301 | /*
302 | 10 Sub Columns
303 | */
304 | FUNCTION print_sub_col_10 (
305 | p_content in clob
306 | , p_align in varchar2 default 'left') return clob;
307 |
308 | /*
309 | 11 Sub Columns
310 | */
311 | FUNCTION print_sub_col_11 (
312 | p_content in clob
313 | , p_align in varchar2 default 'left') return clob;
314 | /*
315 |
316 | 12 Sub Columns
317 | */
318 | FUNCTION print_sub_col_12 (
319 | p_content in clob
320 | , p_align in varchar2 default 'left') return clob;
321 |
322 | /**********************************************
323 | ***********************************************
324 | ***********************************************
325 | PANELS
326 | ***********************************************
327 | ***********************************************
328 | **********************************************/
329 |
330 | FUNCTION print_panel (
331 | p_content in clob
332 | , p_background_color in varchar2 default '#f2f2f2'
333 | , p_text_color in varchar2 default g_text_color) return clob;
334 |
335 | /**********************************************
336 | ***********************************************
337 | ***********************************************
338 | TYPOGRAPHY
339 | ***********************************************
340 | ***********************************************
341 | **********************************************/
342 |
343 | /*
344 | Prints a standard paragraph
345 | */
346 | FUNCTION print_paragraph (
347 | p_text in varchar2
348 | , p_classes in varchar2 default null
349 | , p_font_size in varchar2 default '14px'
350 | , p_align in varchar2 default 'left'
351 | , p_text_color in varchar2 default g_text_color) return clob;
352 |
353 | /*
354 | Prints a bigger paragraph
355 | */
356 | FUNCTION print_paragraph_lead (
357 | p_text in varchar2
358 | , p_align in varchar2 default 'left'
359 | , p_text_color in varchar2 default g_text_color) return clob;
360 |
361 | /*
362 | Prints an H tag
363 | */
364 | FUNCTION print_h (
365 | p_text in varchar2
366 | , p_h_size in varchar2
367 | , p_font_size in varchar2
368 | , p_align in varchar2 default 'left'
369 | , p_text_color in varchar2 default g_text_color) return clob;
370 |
371 | /*
372 | Prints an H1 tag
373 | */
374 | FUNCTION print_h1 (
375 | p_text in varchar2
376 | , p_align in varchar2 default 'left'
377 | , p_text_color in varchar2 default g_text_color) return clob;
378 |
379 | /*
380 | Prints an H2 tag
381 | */
382 | FUNCTION print_h2 (
383 | p_text in varchar2
384 | , p_align in varchar2 default 'left'
385 | , p_text_color in varchar2 default g_text_color) return clob;
386 |
387 | /*
388 | Prints an H3 tag
389 | */
390 | FUNCTION print_h3 (
391 | p_text in varchar2
392 | , p_align in varchar2 default 'left'
393 | , p_text_color in varchar2 default g_text_color) return clob;
394 |
395 | /*
396 | Prints an H4 tag
397 | */
398 | FUNCTION print_h4 (
399 | p_text in varchar2
400 | , p_align in varchar2 default 'left'
401 | , p_text_color in varchar2 default g_text_color) return clob;
402 |
403 | /*
404 | Prints an H5 tag
405 | */
406 | FUNCTION print_h5 (
407 | p_text in varchar2
408 | , p_align in varchar2 default 'left'
409 | , p_text_color in varchar2 default g_text_color) return clob;
410 |
411 | /*
412 | Prints an H6 tag
413 | */
414 | FUNCTION print_h6(
415 | p_text in varchar2
416 | , p_align in varchar2 default 'left'
417 | , p_text_color in varchar2 default g_text_color) return clob;
418 |
419 | /*
420 | Prints a small text
421 | */
422 | FUNCTION print_small_text(
423 | p_text in varchar2
424 | , p_text_color in varchar2 default g_text_color) return clob;
425 |
426 | /*
427 | Prints a label for the title bar
428 | */
429 | FUNCTION print_title(
430 | p_text in varchar2
431 | , p_text_color in varchar2 default '#ffffff') return clob;
432 |
433 | /**********************************************
434 | ***********************************************
435 | ***********************************************
436 | BUTTONS
437 | ***********************************************
438 | ***********************************************
439 | **********************************************/
440 |
441 | FUNCTION print_button (
442 | p_content in clob
443 | , p_button_classes in varchar2 default 'button'
444 | , p_align in varchar2 default 'left'
445 | , p_padding in varchar2 default '0 0 10px'
446 | , p_background_color in varchar2 default 'transparent'
447 | , p_border in varchar2 default 'none'
448 | , p_extra_style in varchar2 default null) return clob;
449 |
450 | FUNCTION print_plain_link (
451 | p_url in clob
452 | , p_label in clob) return clob;
453 |
454 | FUNCTION print_primary_button (
455 | p_url in clob
456 | , p_label in clob) return clob;
457 |
458 | FUNCTION print_button_facebook (
459 | p_url in clob
460 | , p_label in clob) return clob;
461 |
462 | FUNCTION print_button_twitter (
463 | p_url in clob
464 | , p_label in clob) return clob;
465 |
466 | FUNCTION print_button_google_plus (
467 | p_url in clob
468 | , p_label in clob) return clob;
469 |
470 | /**********************************************
471 | ***********************************************
472 | ***********************************************
473 | OTHER FEATURES
474 | ***********************************************
475 | ***********************************************
476 | **********************************************/
477 |
478 | /*
479 | Print an image through a URL
480 | Can be aligned left, center or right
481 | */
482 | FUNCTION print_image(
483 | p_img_url in varchar2
484 | , p_align in varchar2 default 'left') return clob;
485 |
486 | /*
487 | Simple line to separate content
488 | */
489 | FUNCTION print_hr return clob;
490 |
491 | /**********************************************
492 | ***********************************************
493 | ***********************************************
494 | COMMON PATTERNS
495 | ***********************************************
496 | ***********************************************
497 | **********************************************/
498 |
499 | FUNCTION print_default_body_header(
500 | p_logo_url in varchar2
501 | , p_title in varchar2) return clob;
502 |
503 | FUNCTION print_default_body_footer(
504 | p_footer_links in varchar2) return clob;
505 |
506 | FUNCTION print_global_body(
507 | p_content in clob) return clob;
508 |
509 | /**********************************************
510 | ***********************************************
511 | ***********************************************
512 | PRESET TEMPLATES
513 | ***********************************************
514 | ***********************************************
515 | **********************************************/
516 | FUNCTION basic (p_content in t_content) return clob;
517 | FUNCTION hero (p_content in t_content) return clob;
518 | FUNCTION sidebar (p_content in t_content) return clob;
519 | FUNCTION sidebar_hero (p_content in t_content) return clob;
520 |
521 | end rwd_email;
--------------------------------------------------------------------------------
/rwd_email.pkb:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE BODY rwd_email IS
2 |
3 | /**********************************************
4 | ***********************************************
5 | ***********************************************
6 | GLOBAL STUFF
7 | ***********************************************
8 | ***********************************************
9 | **********************************************/
10 |
11 | /*
12 | Global Header
13 | */
14 | FUNCTION print_global_header return clob IS
15 | BEGIN
16 | return '' ||
17 | '' ||
18 | '
' ||
19 | '' ||
20 | '' ||
21 | '';
22 | END print_global_header;
23 |
24 | /*
25 | Global CSS
26 | */
27 | FUNCTION print_global_css return clob IS
28 | BEGIN
29 | return '';
30 | END print_global_css;
31 |
32 | /*
33 | Global Body HTML tag
34 | */
35 | FUNCTION outer_body(
36 | p_content in clob) return clob IS
37 | BEGIN
38 | return ''
39 | || p_content
40 | || '';
41 | END outer_body;
42 |
43 | /*
44 | Global Mandatory Table to wrap the body content
45 | */
46 | FUNCTION inner_body(
47 | p_content in clob) return clob IS
48 | BEGIN
49 | return ''
50 | || ''
51 | || p_content
52 | || '
'
53 | || '
';
54 | END inner_body;
55 |
56 | /* Email Footer */
57 | FUNCTION print_global_end return clob IS
58 | BEGIN
59 | return '';
60 | END print_global_end;
61 |
62 | /**********************************************
63 | ***********************************************
64 | ***********************************************
65 | GRID
66 | ***********************************************
67 | ***********************************************
68 | **********************************************/
69 |
70 | /*
71 | Constrains the content to a 580px wrapper on large screens (95% on small screens) and centers it within the body.
72 | */
73 | FUNCTION print_container (
74 | p_content in clob) return clob IS
75 | BEGIN
76 | return ''
77 | || ''
78 | || print_standard_td(p_content)
79 | || '
'
80 | || '
';
81 | END print_container;
82 |
83 | /*
84 | Separates each row of content.
85 | */
86 | FUNCTION print_row (
87 | p_content in clob
88 | , p_classes in varchar2 default null
89 | , p_display in varchar2 default 'block'
90 | , p_header_background_color in varchar2 default 'transparent') return clob IS
91 | BEGIN
92 | return ''
93 | || ''
94 | || p_content
95 | || '
'
96 | || '
';
97 | END print_row;
98 |
99 | /*
100 | Grid Standard TD
101 | */
102 | FUNCTION print_standard_td (
103 | p_content in clob
104 | , p_align in varchar2 default 'left'
105 | , p_padding in varchar2 default '0 0 10px'
106 | , p_background_color in varchar2 default 'transparent'
107 | , p_border in varchar2 default 'none'
108 | , p_extra_attributes in varchar2 default null)
109 | return clob IS
110 | BEGIN
111 | return ''
112 | || p_content
113 | || ' | ';
114 | END print_standard_td;
115 |
116 | /*
117 | Grid Standard TD Centered
118 | */
119 | FUNCTION print_standard_td_center (
120 | p_content in clob) return clob IS
121 | BEGIN
122 | return print_standard_td(
123 | p_content => ''
124 | || p_content
125 | || ''
126 | ,p_align => 'center'
127 | );
128 | END print_standard_td_center;
129 |
130 | /*
131 | Wraps each .columns table, in order to create a gutter between columns
132 | and force them to expand to full width on small screens.
133 | */
134 | FUNCTION print_column_wrapper (
135 | p_content in clob) return clob IS
136 | BEGIN
137 | return ''
138 | || p_content
139 | || ' | ';
140 | END print_column_wrapper;
141 |
142 | /*
143 | Can be any number between one and twelve (spelled out).
144 | Used to determine how wide your .columns tables are.
145 | The number of columns in each row should add up to 12, including offset columns .
146 | */
147 | FUNCTION print_col (
148 | p_content in clob
149 | , p_number in varchar2
150 | , p_width in varchar2) return clob IS
151 | BEGIN
152 | return ''
153 | || ''
154 | || p_content
155 | || print_expander
156 | || '
'
157 | || '
';
158 | END print_col;
159 |
160 | /*
161 | 1 Columns
162 | */
163 | FUNCTION print_col_1 (p_content in clob) return clob IS
164 | BEGIN
165 | return print_col(p_content, 'one', '30px');
166 | END print_col_1;
167 |
168 | /*
169 | 2 Columns
170 | */
171 | FUNCTION print_col_2 (p_content in clob) return clob IS
172 | BEGIN
173 | return print_col(p_content, 'two', '80px');
174 | END print_col_2;
175 |
176 | /*
177 | 3 Columns
178 | */
179 | FUNCTION print_col_3 (p_content in clob) return clob IS
180 | BEGIN
181 | return print_col(p_content, 'three', '130px');
182 | END print_col_3;
183 |
184 | /*
185 | 4 Columns
186 | */
187 | FUNCTION print_col_4 (p_content in clob) return clob IS
188 | BEGIN
189 | return print_col(p_content, 'four', '180px');
190 | END print_col_4;
191 |
192 | /*
193 | 5 Columns
194 | */
195 | FUNCTION print_col_5 (p_content in clob) return clob IS
196 | BEGIN
197 | return print_col(p_content, 'five', '230px');
198 | END print_col_5;
199 |
200 | /*
201 | 6 Columns
202 | */
203 | FUNCTION print_col_6 (p_content in clob) return clob IS
204 | BEGIN
205 | return print_col(p_content, 'six', '280px');
206 | END print_col_6;
207 |
208 | /*
209 | 7 Columns
210 | */
211 | FUNCTION print_col_7 (p_content in clob) return clob IS
212 | BEGIN
213 | return print_col(p_content, 'seven', '330px');
214 | END print_col_7;
215 |
216 | /*
217 | 8 Columns
218 | */
219 | FUNCTION print_col_8 (p_content in clob) return clob IS
220 | BEGIN
221 | return print_col(p_content, 'eight', '380px');
222 | END print_col_8;
223 |
224 | /*
225 | 9 Columns
226 | */
227 | FUNCTION print_col_9 (p_content in clob) return clob IS
228 | BEGIN
229 | return print_col(p_content, 'nine', '430px');
230 | END print_col_9;
231 |
232 | /*
233 | 10 Columns
234 | */
235 | FUNCTION print_col_10 (p_content in clob) return clob IS
236 | BEGIN
237 | return print_col(p_content, 'ten', '480px');
238 | END print_col_10;
239 |
240 | /*
241 | 11 Columns
242 | */
243 | FUNCTION print_col_11 (p_content in clob) return clob IS
244 | BEGIN
245 | return print_col(p_content, 'eleven', '530px');
246 | END print_col_11;
247 |
248 | /*
249 | 12 Columns
250 | */
251 | FUNCTION print_col_12 (p_content in clob) return clob IS
252 | BEGIN
253 | return print_col(p_content, 'twelve', '580px');
254 | END print_col_12;
255 |
256 | /*
257 | An empty (and invisible) element added after the content element in a .columns table.
258 | It forces the content td to expand to the full width of the screen on small devices,
259 | instead of just the width of the content within the td.
260 | */
261 | FUNCTION print_expander return clob IS
262 | BEGIN
263 | return ' | ';
264 | END print_expander;
265 |
266 | /**********************************************
267 | ***********************************************
268 | ***********************************************
269 | SUB GRID
270 | ***********************************************
271 | ***********************************************
272 | **********************************************/
273 |
274 | /*
275 | Can be any number between one and twelve (spelled out).
276 | Used to determine how wide your .columns tables are.
277 | The number of sub columns in each row should add up to 12, including offset sub columns .
278 | */
279 | FUNCTION print_sub_col (p_content in clob
280 | , p_classes in varchar2
281 | , p_width in varchar2
282 | , p_align in varchar2 default 'left') return clob IS
283 | BEGIN
284 | return ''
285 | || p_content
286 | || ' | ';
287 | END print_sub_col;
288 |
289 | /*
290 | 1 Sub Columns
291 | */
292 | FUNCTION print_sub_col_1 (p_content in clob, p_align in varchar2 default 'left') return clob IS
293 | BEGIN
294 | return print_sub_col(p_content, 'one', round(100*1/12, 4) || '%', p_align);
295 | END print_sub_col_1;
296 |
297 | /*
298 | 2 Sub Columns
299 | */
300 | FUNCTION print_sub_col_2 (p_content in clob, p_align in varchar2 default 'left') return clob IS
301 | BEGIN
302 | return print_sub_col(p_content, 'two', round(100*2/12, 4) || '%', p_align);
303 | END print_sub_col_2;
304 |
305 | /*
306 | 3 Sub Columns
307 | */
308 | FUNCTION print_sub_col_3 (p_content in clob, p_align in varchar2 default 'left') return clob IS
309 | BEGIN
310 | return print_sub_col(p_content, 'three', round(100*3/12, 4) || '%', p_align);
311 | END print_sub_col_3;
312 |
313 | /*
314 | 4 Sub Columns
315 | */
316 | FUNCTION print_sub_col_4 (p_content in clob, p_align in varchar2 default 'left') return clob IS
317 | BEGIN
318 | return print_sub_col(p_content, 'four', round(100*4/12, 4) || '%', p_align);
319 | END print_sub_col_4;
320 |
321 | /*
322 | 5 Sub Columns
323 | */
324 | FUNCTION print_sub_col_5 (p_content in clob, p_align in varchar2 default 'left') return clob IS
325 | BEGIN
326 | return print_sub_col(p_content, 'five', round(100*5/12, 4) || '%', p_align);
327 | END print_sub_col_5;
328 |
329 | /*
330 | 6 Sub Columns
331 | */
332 | FUNCTION print_sub_col_6 (p_content in clob, p_align in varchar2 default 'left') return clob IS
333 | BEGIN
334 | return print_sub_col(p_content, 'six', round(100*6/12, 4) || '%', p_align);
335 | END print_sub_col_6;
336 |
337 | /*
338 | 7 Sub Columns
339 | */
340 | FUNCTION print_sub_col_7 (p_content in clob, p_align in varchar2 default 'left') return clob IS
341 | BEGIN
342 | return print_sub_col(p_content, 'seven', round(100*7/12, 4) || '%', p_align);
343 | END print_sub_col_7;
344 |
345 | /*
346 | 8 Sub Columns
347 | */
348 | FUNCTION print_sub_col_8 (p_content in clob, p_align in varchar2 default 'left') return clob IS
349 | BEGIN
350 | return print_sub_col(p_content, 'eight', round(100*8/12, 4) || '%', p_align);
351 | END print_sub_col_8;
352 |
353 | /*
354 | 9 Sub Columns
355 | */
356 | FUNCTION print_sub_col_9 (p_content in clob, p_align in varchar2 default 'left') return clob IS
357 | BEGIN
358 | return print_sub_col(p_content, 'nine', round(100*9/12, 4) || '%', p_align);
359 | END print_sub_col_9;
360 |
361 | /*
362 | 10 Sub Columns
363 | */
364 | FUNCTION print_sub_col_10 (p_content in clob, p_align in varchar2 default 'left') return clob IS
365 | BEGIN
366 | return print_sub_col(p_content, 'ten', round(100*10/12, 4) || '%', p_align);
367 | END print_sub_col_10;
368 |
369 | /*
370 | 11 Sub Columns
371 | */
372 | FUNCTION print_sub_col_11 (p_content in clob, p_align in varchar2 default 'left') return clob IS
373 | BEGIN
374 | return print_sub_col(p_content, 'eleven', round(100*11/12, 4) || '%', p_align);
375 | END print_sub_col_11;
376 |
377 | /*
378 | 12 Sub Columns
379 | */
380 | FUNCTION print_sub_col_12 (p_content in clob, p_align in varchar2 default 'left') return clob IS
381 | BEGIN
382 | return print_sub_col(p_content, 'twelve', round(100*12/12, 4) || '%', p_align);
383 | END print_sub_col_12;
384 |
385 | /**********************************************
386 | ***********************************************
387 | ***********************************************
388 | PANELS
389 | ***********************************************
390 | ***********************************************
391 | **********************************************/
392 |
393 | FUNCTION print_panel (
394 | p_content in clob
395 | , p_background_color in varchar2 default '#f2f2f2'
396 | , p_text_color in varchar2 default g_text_color) return clob IS
397 | BEGIN
398 | return '' || p_content || ' | ';
399 | END print_panel;
400 |
401 | /**********************************************
402 | ***********************************************
403 | ***********************************************
404 | TYPOGRAPHY
405 | ***********************************************
406 | ***********************************************
407 | **********************************************/
408 |
409 | /*
410 | Prints a standard paragraph
411 | */
412 | FUNCTION print_paragraph (
413 | p_text in varchar2
414 | , p_classes in varchar2 default null
415 | , p_font_size in varchar2 default '14px'
416 | , p_align in varchar2 default 'left'
417 | , p_text_color in varchar2 default g_text_color) return clob IS
418 | BEGIN
419 | return '' || p_text || '
';
420 | END print_paragraph;
421 |
422 | /*
423 | Prints a bigger paragraph
424 | */
425 | FUNCTION print_paragraph_lead (
426 | p_text in varchar2
427 | , p_align in varchar2 default 'left'
428 | , p_text_color in varchar2 default g_text_color) return clob IS
429 | BEGIN
430 | return print_paragraph (
431 | p_text => p_text
432 | , p_classes => 'lead'
433 | , p_font_size => '18px'
434 | , p_align => p_align
435 | , p_text_color => p_text_color);
436 | END print_paragraph_lead;
437 |
438 | /*
439 | Prints an H tag
440 | */
441 | FUNCTION print_h (
442 | p_text in varchar2
443 | , p_h_size in varchar2
444 | , p_font_size in varchar2
445 | , p_align in varchar2 default 'left'
446 | , p_text_color in varchar2 default g_text_color) return clob IS
447 | BEGIN
448 | return ''
449 | || p_text
450 | || '';
451 | END print_h;
452 |
453 | /*
454 | Prints an H1 tag
455 | */
456 | FUNCTION print_h1 (
457 | p_text in varchar2
458 | , p_align in varchar2 default 'left'
459 | , p_text_color in varchar2 default g_text_color) return clob IS
460 | BEGIN
461 | return print_h (
462 | p_text => p_text
463 | , p_h_size => '1'
464 | , p_font_size => '40px'
465 | , p_align => p_align
466 | , p_text_color => p_text_color);
467 | END print_h1;
468 |
469 | /*
470 | Prints an H2 tag
471 | */
472 | FUNCTION print_h2 (
473 | p_text in varchar2
474 | , p_align in varchar2 default 'left'
475 | , p_text_color in varchar2 default g_text_color) return clob IS
476 | BEGIN
477 | return print_h (
478 | p_text => p_text
479 | , p_h_size => '2'
480 | , p_font_size => '36px'
481 | , p_align => p_align
482 | , p_text_color => p_text_color);
483 | END print_h2;
484 |
485 | /*
486 | Prints an H3 tag
487 | */
488 | FUNCTION print_h3 (
489 | p_text in varchar2
490 | , p_align in varchar2 default 'left'
491 | , p_text_color in varchar2 default g_text_color) return clob IS
492 | BEGIN
493 | return print_h (
494 | p_text => p_text
495 | , p_h_size => '3'
496 | , p_font_size => '32px'
497 | , p_align => p_align
498 | , p_text_color => p_text_color);
499 | END print_h3;
500 |
501 | /*
502 | Prints an H4 tag
503 | */
504 | FUNCTION print_h4 (
505 | p_text in varchar2
506 | , p_align in varchar2 default 'left'
507 | , p_text_color in varchar2 default g_text_color) return clob IS
508 | BEGIN
509 | return print_h (
510 | p_text => p_text
511 | , p_h_size => '4'
512 | , p_font_size => '28px'
513 | , p_align => p_align
514 | , p_text_color => p_text_color);
515 | END print_h4;
516 |
517 | /*
518 | Prints an H5 tag
519 | */
520 | FUNCTION print_h5 (
521 | p_text in varchar2
522 | , p_align in varchar2 default 'left'
523 | , p_text_color in varchar2 default g_text_color) return clob IS
524 | BEGIN
525 | return print_h (
526 | p_text => p_text
527 | , p_h_size => '5'
528 | , p_font_size => '24px'
529 | , p_align => p_align
530 | , p_text_color => p_text_color);
531 | END print_h5;
532 |
533 | /*
534 | Prints an H6 tag
535 | */
536 | FUNCTION print_h6(
537 | p_text in varchar2
538 | , p_align in varchar2 default 'left'
539 | , p_text_color in varchar2 default g_text_color) return clob IS
540 | BEGIN
541 | return print_h (
542 | p_text => p_text
543 | , p_h_size => '6'
544 | , p_font_size => '20px'
545 | , p_align => p_align
546 | , p_text_color => p_text_color);
547 | END print_h6;
548 |
549 | /*
550 | Prints a small text
551 | */
552 | FUNCTION print_small_text(
553 | p_text in varchar2
554 | , p_text_color in varchar2 default g_text_color) return clob IS
555 | BEGIN
556 | return '' || p_text || '';
557 | END print_small_text;
558 |
559 | /*
560 | Prints a label for the title bar
561 | */
562 | FUNCTION print_title(
563 | p_text in varchar2
564 | , p_text_color in varchar2 default '#ffffff') return clob IS
565 | BEGIN
566 | return '' || p_text || '';
567 | END print_title;
568 |
569 | /**********************************************
570 | ***********************************************
571 | ***********************************************
572 | BUTTONS
573 | ***********************************************
574 | ***********************************************
575 | **********************************************/
576 |
577 | FUNCTION print_button (
578 | p_content in clob
579 | , p_button_classes in varchar2 default 'button'
580 | , p_align in varchar2 default 'left'
581 | , p_padding in varchar2 default '0 0 10px'
582 | , p_background_color in varchar2 default 'transparent'
583 | , p_border in varchar2 default 'none'
584 | , p_extra_style in varchar2 default null) return clob IS
585 | BEGIN
586 | return '';
593 | END print_button;
594 |
595 | FUNCTION print_plain_link (
596 | p_url in clob
597 | , p_label in clob) return clob IS
598 | BEGIN
599 | return print_button(
600 | p_content => '' || p_label || ''
601 | );
602 | END print_plain_link;
603 |
604 | FUNCTION print_primary_button (
605 | p_url in clob
606 | , p_label in clob) return clob IS
607 | BEGIN
608 | return print_button(
609 | p_content => '' || p_label || ''
610 | ,p_align => 'center'
611 | ,p_padding => '8px 0'
612 | ,p_background_color => g_primary_button_bgcolor
613 | ,p_border => '1px solid #2284a1'
614 | ,p_extra_style => 'display: block; width: auto !important;'
615 | );
616 | END print_primary_button;
617 |
618 | FUNCTION print_button_facebook (
619 | p_url in clob
620 | , p_label in clob) return clob IS
621 | BEGIN
622 | return print_button(
623 | p_content => '' || p_label || ''
624 | ,p_button_classes => 'tiny-button facebook'
625 | ,p_align => 'center'
626 | ,p_padding => '5px 0 4px'
627 | ,p_background_color => '#3b5998'
628 | ,p_border => '1px solid #2d4473'
629 | ,p_extra_style => 'display: block; width: auto !important;'
630 | );
631 | END print_button_facebook;
632 |
633 | FUNCTION print_button_twitter (
634 | p_url in clob
635 | , p_label in clob) return clob IS
636 | BEGIN
637 | return print_button(
638 | p_content => '' || p_label || ''
639 | ,p_button_classes => 'tiny-button twitter'
640 | ,p_align => 'center'
641 | ,p_padding => '5px 0 4px'
642 | ,p_background_color => '#00acee'
643 | ,p_border => '1px solid #0087bb'
644 | ,p_extra_style => 'display: block; width: auto !important;'
645 | );
646 | END print_button_twitter;
647 |
648 | FUNCTION print_button_google_plus (
649 | p_url in clob
650 | , p_label in clob) return clob IS
651 | BEGIN
652 | return print_button(
653 | p_content => '' || p_label || ''
654 | ,p_button_classes => 'tiny-button google-plus'
655 | ,p_align => 'center'
656 | ,p_padding => '5px 0 4px'
657 | ,p_background_color => '#DB4A39'
658 | ,p_border => '1px solid #cc0000'
659 | ,p_extra_style => 'display: block; width: auto !important;'
660 | );
661 | END print_button_google_plus;
662 |
663 | /**********************************************
664 | ***********************************************
665 | ***********************************************
666 | OTHER FEATURES
667 | ***********************************************
668 | ***********************************************
669 | **********************************************/
670 |
671 | /*
672 | Print an image through a URL
673 | Can be aligned left, center or right
674 | */
675 | FUNCTION print_image(
676 | p_img_url in varchar2
677 | , p_align in varchar2 default 'left') return clob IS
678 | BEGIN
679 | return '
';
680 | END print_image;
681 |
682 | /*
683 | Simple line to separate content
684 | */
685 | FUNCTION print_hr return clob IS
686 | BEGIN
687 | return '
';
688 | END print_hr;
689 |
690 | /**********************************************
691 | ***********************************************
692 | ***********************************************
693 | COMMON PATTERNS
694 | ***********************************************
695 | ***********************************************
696 | **********************************************/
697 |
698 | FUNCTION print_default_body_header(
699 | p_logo_url in varchar2
700 | , p_title in varchar2) return clob IS
701 | BEGIN
702 | return print_row(
703 | p_content => print_standard_td_center(
704 | print_container(
705 | print_column_wrapper (
706 | print_col_12(
707 | print_sub_col_6(print_image(p_logo_url), 'left')
708 | || print_sub_col_6(print_title(p_title), 'right')
709 | )
710 | )
711 | )
712 | )
713 | , p_classes => 'header'
714 | , p_display => 'table'
715 | , p_header_background_color => g_header_background_color
716 | )
717 | || '
';
718 | END print_default_body_header;
719 |
720 | FUNCTION print_default_body_footer(
721 | p_footer_links in varchar2) return clob IS
722 | BEGIN
723 | return '
'
724 | || print_row(
725 | print_column_wrapper (
726 | print_col_12(
727 | print_standard_td_center(
728 | print_paragraph (
729 | p_text => p_footer_links
730 | , p_align => 'center')
731 | )
732 | )
733 | )
734 | );
735 | END print_default_body_footer;
736 |
737 | FUNCTION print_global_body(
738 | p_content in clob) return clob IS
739 | BEGIN
740 | return print_global_header
741 | || outer_body(
742 | print_global_css
743 | || inner_body(
744 | print_standard_td_center(p_content)
745 | )
746 | )
747 | || print_global_end;
748 | END print_global_body;
749 |
750 | /**********************************************
751 | ***********************************************
752 | ***********************************************
753 | PRESET TEMPLATES
754 | ***********************************************
755 | ***********************************************
756 | **********************************************/
757 |
758 | /* Basic Template */
759 | FUNCTION basic (p_content in t_content) return clob IS
760 | l_body clob;
761 | BEGIN
762 | /* Build the email body */
763 | l_body := print_global_body(
764 | print_default_body_header(p_content.logo_url, p_content.title)
765 | || print_container(
766 | print_row(
767 | print_column_wrapper(
768 | print_col_12(
769 | print_standard_td(
770 | print_h1(p_content.welcome_title)
771 | || print_paragraph_lead(p_content.sub_welcome_title)
772 | || print_paragraph(p_content.top_paragraph)
773 | )
774 | )
775 | )
776 | )
777 | || print_row(
778 | print_column_wrapper(
779 | print_col_12(
780 | print_panel(
781 | p_content => print_paragraph(
782 | p_text => p_content.bottom_paragraph)
783 | , p_background_color => '#ECF8FF')
784 | )
785 | )
786 | )
787 | || '
'
788 | || print_row(
789 | print_column_wrapper(
790 | print_col_6(
791 | print_panel(
792 | print_h6(p_content.social_title)
793 | || print_button_facebook(
794 | p_url => '#'
795 | ,p_label => 'Facebook')
796 | || print_hr
797 | || print_button_twitter(
798 | p_url => '#'
799 | ,p_label => 'Twitter')
800 | || print_hr
801 | || print_button_google_plus(
802 | p_url => '#'
803 | ,p_label => 'Google+')
804 | )
805 | )
806 | )
807 | || print_column_wrapper(
808 | print_col_6(
809 | print_panel(
810 | print_h6(p_content.contact_info)
811 | || print_paragraph(p_content.contact_phone)
812 | || print_paragraph(p_content.contact_email)
813 | )
814 | )
815 | )
816 | )
817 | || print_default_body_footer(p_content.footer_links)
818 | )
819 | );
820 |
821 | /* Returns email body */
822 | return l_body;
823 | END basic;
824 |
825 | /* Hero Template */
826 | FUNCTION hero (p_content in t_content) RETURN clob IS
827 | l_body clob;
828 | BEGIN
829 | /* Build the email body */
830 | l_body := print_global_body(
831 | print_default_body_header(p_content.logo_url, p_content.title)
832 | || print_container(
833 | print_row(
834 | print_column_wrapper(
835 | print_col_12(
836 | print_standard_td(
837 | print_h1(p_content.welcome_title)
838 | || print_paragraph_lead(p_content.sub_welcome_title)
839 | || print_image(p_content.big_picture_url)
840 | )
841 | )
842 | )
843 | )
844 | || print_row(
845 | print_column_wrapper(
846 | print_col_12(
847 | print_panel(
848 | p_content => print_paragraph(
849 | p_text => p_content.top_paragraph)
850 | ,p_background_color => '#ECF8FF')
851 | )
852 | || '
'
853 | || print_col_12(
854 | print_h3(p_content.bottom_paragraph_title
855 | || print_small_text(p_content.bottom_paragraph_subtitle))
856 | || print_paragraph(
857 | p_text => p_content.bottom_paragraph)
858 | )
859 | )
860 | )
861 | || '
'
862 | || print_row(
863 | print_column_wrapper(
864 | print_col_6(
865 | print_panel(
866 | print_h6(p_content.social_title)
867 | || print_button_facebook(
868 | p_url => '#'
869 | ,p_label => 'Facebook')
870 | || print_hr
871 | || print_button_twitter(
872 | p_url => '#'
873 | ,p_label => 'Twitter')
874 | || print_hr
875 | || print_button_google_plus(
876 | p_url => '#'
877 | ,p_label => 'Google+')
878 | )
879 | )
880 | )
881 | || print_column_wrapper(
882 | print_col_6(
883 | print_panel(
884 | print_h6(p_content.contact_info)
885 | || print_paragraph(p_content.contact_phone)
886 | || print_paragraph(p_content.contact_email)
887 | )
888 | )
889 | )
890 | )
891 | || print_default_body_footer(p_content.footer_links)
892 | )
893 | );
894 |
895 | /* Returns email body */
896 | return l_body;
897 | END hero;
898 |
899 | /* Sidebar Template */
900 | FUNCTION sidebar (p_content in t_content) return clob IS
901 | l_body clob;
902 | BEGIN
903 | /* Build the email body */
904 | l_body := print_global_body(
905 | print_default_body_header(p_content.logo_url, p_content.title)
906 | || print_container(
907 | print_row(
908 | print_column_wrapper(
909 | print_col_6(
910 | print_standard_td(
911 | print_h1(p_content.welcome_title)
912 | || print_paragraph(p_content.sub_welcome_title)
913 | || print_paragraph(p_content.left_paragraph)
914 | )
915 | )
916 | || '
'
917 | || print_col_6(
918 | print_panel(print_paragraph(p_content.top_paragraph))
919 | )
920 | || '
'
921 | || print_col_6(
922 | print_standard_td(
923 | print_paragraph(p_content.left_paragraph)
924 | || print_primary_button (
925 | p_url => '#'
926 | , p_label => 'Click Me!')
927 | )
928 | )
929 | )
930 | || print_column_wrapper(
931 | print_col_6(
932 | print_panel(
933 | print_h6(p_content.right_header)
934 | || print_paragraph(p_content.right_sub_header)
935 | || print_plain_link('#', 'Just a Plain Link »')
936 | || print_hr
937 | || print_plain_link('#', 'Just a Plain Link »')
938 | || print_hr
939 | || print_plain_link('#', 'Just a Plain Link »')
940 | || print_hr
941 | || print_plain_link('#', 'Just a Plain Link »')
942 | || print_hr
943 | || print_plain_link('#', 'Just a Plain Link »')
944 | )
945 | )
946 | || '
'
947 | || print_col_6(
948 | print_panel(
949 | print_h6(p_content.social_title)
950 | || print_button_facebook(
951 | p_url => '#'
952 | ,p_label => 'Facebook')
953 | || print_hr
954 | || print_button_twitter(
955 | p_url => '#'
956 | ,p_label => 'Twitter')
957 | || print_hr
958 | || print_button_google_plus(
959 | p_url => '#'
960 | ,p_label => 'Google+')
961 | || '
'
962 | || print_h6(p_content.contact_info)
963 | || print_paragraph(p_content.contact_phone)
964 | || print_paragraph(p_content.contact_email)
965 | )
966 | )
967 | )
968 | )
969 | || print_default_body_footer(p_content.footer_links)
970 | )
971 | );
972 |
973 | /* Returns email body */
974 | return l_body;
975 | END sidebar;
976 |
977 | /* Sidebar Hero Template */
978 | FUNCTION sidebar_hero (p_content in t_content) return clob IS
979 | l_body clob;
980 | BEGIN
981 | /* Build the email body */
982 | l_body := print_global_body(
983 | print_default_body_header(p_content.logo_url, p_content.title)
984 | || print_container(
985 | print_row(
986 | print_column_wrapper(
987 | print_col_12(
988 | print_standard_td(
989 | print_h1(p_content.welcome_title)
990 | || print_paragraph(p_content.sub_welcome_title)
991 | || print_image(p_content.big_picture_url)
992 | )
993 | )
994 | || print_col_12(
995 | print_panel(print_paragraph(p_content.top_paragraph))
996 | )
997 | )
998 | )
999 | || '
'
1000 | || print_row(
1001 | print_column_wrapper(
1002 | print_col_6(
1003 | print_standard_td(
1004 | print_paragraph(p_content.left_paragraph)
1005 | || print_primary_button (
1006 | p_url => '#'
1007 | , p_label => 'Click Me!')
1008 | )
1009 | )
1010 | )
1011 | || print_column_wrapper(
1012 | print_col_6(
1013 | print_panel(
1014 | print_h6(p_content.right_header)
1015 | || print_paragraph(p_content.right_sub_header)
1016 | || print_plain_link('#', 'Just a Plain Link »')
1017 | || print_hr
1018 | || print_plain_link('#', 'Just a Plain Link »')
1019 | || print_hr
1020 | || print_plain_link('#', 'Just a Plain Link »')
1021 | )
1022 | )
1023 | || '
'
1024 | || print_col_6(
1025 | print_panel(
1026 | print_h6(p_content.social_title)
1027 | || print_button_facebook(
1028 | p_url => '#'
1029 | ,p_label => 'Facebook')
1030 | || print_hr
1031 | || print_button_twitter(
1032 | p_url => '#'
1033 | ,p_label => 'Twitter')
1034 | || print_hr
1035 | || print_button_google_plus(
1036 | p_url => '#'
1037 | ,p_label => 'Google+')
1038 | || '
'
1039 | || print_h6(p_content.contact_info)
1040 | || print_paragraph(p_content.contact_phone)
1041 | || print_paragraph(p_content.contact_email)
1042 | )
1043 | )
1044 | )
1045 | )
1046 | || print_default_body_footer(p_content.footer_links)
1047 | )
1048 | );
1049 |
1050 | /* Returns email body */
1051 | return l_body;
1052 | END sidebar_hero;
1053 |
1054 | END rwd_email;
--------------------------------------------------------------------------------