| File | Folder Link |
|---|---|
| M - Announcement.php | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\app\models |
| V - all files | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\app\views\announcement |
| C - AnnouncementController.php & SettingController.php | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\app\controllers |
| backend.php | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\app\layouts |
| ckeditor -> index.php | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\plugins\ckeditor |
| style.css | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\admin\themes\black_and_white |
| backend.js & announcement.js & bulk_action.js | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\wolf\admin\javascript |
| default.css | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\public\themes\rckuc\css |
| rckuc.js & (All plugin files) | \\SYNAS\Allan\DOCUMENTATION\Module\Announcement\rckuc\public\themes\rckuc\js |
|
wolf_announce.sql |
\\SYNAS\Allan\DOCUMENTATION\Module\Announcement |
Update: backend.php
<head>
<link href="<?php echo URI_PUBLIC; ?>wolf/admin/themes/<?php echo Setting::get('theme'); ?>/switch_button.css" id="css_theme" media="screen" rel="Stylesheet" type="text/css" />
...
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/backend.js"></script>
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/announcement.js"></script>
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/bulk_action.js"></script>
</head>
<!-- Add 'Announcement' Tab -->
<body id="body_<?php echo $ctrl.'_'.Dispatcher::getAction(); ?>">
<ul>
<li id="page-plugin" class="plugin"><a href="<?php echo get_url('announcement'); ?>"<?php if ($ctrl=='announcement') echo ' class="current"'; ?>><?php echo __('Announcement'); ?></a></li>
</ul>
</body>
<head>
<link href="<?php echo URI_PUBLIC; ?>wolf/admin/themes/<?php echo Setting::get('theme'); ?>/switch_button.css" id="css_theme" media="screen" rel="Stylesheet" type="text/css" />
...
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/backend.js"></script>
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/announcement.js"></script>
<script type="text/javascript" src="<?php echo URI_PUBLIC; ?>wolf/admin/javascripts/bulk_action.js"></script>
</head>
<!-- Add 'Announcement' Tab -->
<body id="body_<?php echo $ctrl.'_'.Dispatcher::getAction(); ?>">
<ul>
<li id="page-plugin" class="plugin"><a href="<?php echo get_url('announcement'); ?>"<?php if ($ctrl=='announcement') echo ' class="current"'; ?>><?php echo __('Announcement'); ?></a></li>
</ul>
</body>
Update: wolf\plugins\ckeditor -> index.php
To enable Ckeditor
Update: function ckeditor_filter_setup()
in $controllers add one more field for "|announcement"
function ckeditor_filter_setup() {
$config_path = (USE_MOD_REWRITE) ? 'ckeditor/' : '../../?/wolf/plugins/ckeditor/';
$controllers = '(page|snippet|donate|story|volunteer|project|documentation|source_code|announcement|form_builder|portfolio|testimonial|client|portfolio_section|portfolio_highlight)';
$actions = '(add|edit|create|view|table)';
$pattern = '/^'.ADMIN_DIR.'\/'.$controllers.'\/'.$actions.'/';
if (preg_match($pattern, CURRENT_URI)) {
Plugin::addJavascript('ckeditor', 'scripts/ckeditor/ckeditor.js');
Plugin::addJavascript('ckeditor', 'scripts/init.js');
/* nasty way of including scripts */
Plugin::$javascripts[] = $config_path.'ckeditor_config.js';
// load it AFTER ckeditor_config!
// Plugin::addJavascript('ckeditor', 'scripts/user/config.js');
}
}
function ckeditor_filter_setup() {
$config_path = (USE_MOD_REWRITE) ? 'ckeditor/' : '../../?/wolf/plugins/ckeditor/';
$controllers = '(page|snippet|donate|story|volunteer|project|documentation|source_code|announcement|form_builder|portfolio|testimonial|client|portfolio_section|portfolio_highlight)';
$actions = '(add|edit|create|view|table)';
$pattern = '/^'.ADMIN_DIR.'\/'.$controllers.'\/'.$actions.'/';
if (preg_match($pattern, CURRENT_URI)) {
Plugin::addJavascript('ckeditor', 'scripts/ckeditor/ckeditor.js');
Plugin::addJavascript('ckeditor', 'scripts/init.js');
/* nasty way of including scripts */
Plugin::$javascripts[] = $config_path.'ckeditor_config.js';
// load it AFTER ckeditor_config!
// Plugin::addJavascript('ckeditor', 'scripts/user/config.js');
}
}
Insert SQL Record into wolf_module_setting:
Add 3 status for:
INSERT INTO `wolf_module_setting`
(`id`, `module`, `name`, `value_type`, `value`, `created_on`, `updated_on`, `created_by_id`, `updated_by_id`)
VALUES
(NULL, 'announcement', 'Fullscreen', 'checkbox', '1', NOW(), NULL, NULL, NULL),
(NULL, 'announcement', 'Popup Autoplay', 'checkbox', '1', NOW(), NULL, NULL, NULL),
(NULL, 'announcement', 'Banner Autoplay', 'checkbox', '1', NOW(), NULL, NULL, NULL);
INSERT INTO `wolf_module_setting`
(`id`, `module`, `name`, `value_type`, `value`, `created_on`, `updated_on`, `created_by_id`, `updated_by_id`)
VALUES
(NULL, 'announcement', 'Fullscreen', 'checkbox', '1', NOW(), NULL, NULL, NULL),
(NULL, 'announcement', 'Popup Autoplay', 'checkbox', '1', NOW(), NULL, NULL, NULL),
(NULL, 'announcement', 'Banner Autoplay', 'checkbox', '1', NOW(), NULL, NULL, NULL);
Update: style.css
/* For Announcement */
#announcement_page {
max-height: 20rem;
overflow: auto;
display: flex;
flex-direction: column;
}
#announcement_page > label {
background: #ffffff;
border: 1px solid #e0e0e0;
/* border-radius: 10px; */
padding: 0.3rem;
margin-bottom: 0.3rem;
display: flex;
flex-direction: row;
gap: 1rem;
align-items: center;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
/* For Announcement */
#announcement_page {
max-height: 20rem;
overflow: auto;
display: flex;
flex-direction: column;
}
#announcement_page > label {
background: #ffffff;
border: 1px solid #e0e0e0;
/* border-radius: 10px; */
padding: 0.3rem;
margin-bottom: 0.3rem;
display: flex;
flex-direction: row;
gap: 1rem;
align-items: center;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
Update: backend.js
Insert:
// Switch
$(document).ready(function () {
// for page setting
$("input.on_off_status").click(function () {
if($(this).is(":checked")) {
$(this).parents(".switch_container").find(".switch_label").text("On");
} else {
$(this).parents(".switch_container").find(".switch_label").text("Off");
}
})
})
// Switch
$(document).ready(function () {
// for page setting
$("input.on_off_status").click(function () {
if($(this).is(":checked")) {
$(this).parents(".switch_container").find(".switch_label").text("On");
} else {
$(this).parents(".switch_container").find(".switch_label").text("Off");
}
})
})
Create New Snippet: announcement
<?php
$announcements = Announcement::findByPageId((int)$this->id);
$activePopups = [];
$activeBanners = [];
$tz = new DateTimeZone('Asia/Kuala_Lumpur');
$now = new DateTime('now', $tz);
foreach ($announcements as $announcement) {
if ((int)$announcement->status === 1) {
$start = new DateTime($announcement->start_date, $tz);
$end = new DateTime($announcement->end_date, $tz);
if ($now >= $start && $now <= $end) {
if ($announcement->display_type == 'popup') {
$activePopups[] = $announcement;
} else if ($announcement->display_type == 'banner') {
$activeBanners[] = $announcement;
}
}
}
}
$fullscreen_status = htmlentities(ModuleSetting::findSetting('announcement', 'Fullscreen'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
$popup_autoplay = htmlentities(ModuleSetting::findSetting('announcement', 'Popup Autoplay'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
$banner_autoplay = htmlentities(ModuleSetting::findSetting('announcement', 'Banner Autoplay'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
echo '<input type="hidden" id="fullscreen_status" value="'.$fullscreen_status.'">';
echo '<input type="hidden" id="popup_autoplay" value="'.$popup_autoplay.'">';
echo '<input type="hidden" id="banner_autoplay" value="'.$banner_autoplay.'">';
?>
<!-- Hidden announcement popups -->
<?php foreach ($activePopups as $announcement):
$modalId = "announcements_modal_" . $announcement->id;
?>
<div id="<?= $modalId ?>" class="announcements-popup mfp-hide">
<div class="announcement-slide">
<h2><?= $announcement->name ?></h2>
<div class="announcement-content"><?= $announcement->description ?></div>
<?php if ((int)$announcement->btn_status == 1) {
$link = '#';
if ($announcement->btn_type == 'external_link') {
$link = $announcement->btn_external_link;
} else if ($announcement->btn_type == 'assign_to_page') {
$page = Page::findById((int)$announcement->btn_page_id);
$link = URL_PUBLIC . (USE_MOD_REWRITE ? '' : '?') . $page->getUri() . ($page->getUri() ? URL_SUFFIX : '');
}
echo '<a class="btn-blue" href="'.$link.'">'.$announcement->btn_caption.'</a>';
}
?>
</div>
</div>
<?php endforeach; ?>
<div class="banner-announcement">
<?php foreach ($activeBanners as $announcement): ?>
<div>
<div class="announcement-container">
<input type="hidden" class="announcement_id" value="<?= $announcement->id ?>">
<input type="hidden" class="announcement_display_option" value="<?= $announcement->display_option ?>">
<h2><?= $announcement->name ?></h2>
<div class="announcement-content"><?= $announcement->description ?></div>
<?php if ((int)$announcement->btn_status == 1) {
$link = '#';
if ($announcement->btn_type == 'external_link') {
$link = $announcement->btn_external_link;
} else if ($announcement->btn_type == 'assign_to_page') {
$page = Page::findById((int)$announcement->btn_page_id);
$link = URL_PUBLIC . (USE_MOD_REWRITE ? '' : '?') . $page->getUri() . ($page->getUri() ? URL_SUFFIX : '');
}
echo '<a href="'.$link.'">'.$announcement->btn_caption.' ></a>';
}
?>
<div class="slide-counter"></div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php
if (!empty($activePopups)):
?>
<!-- Pass announcements data to JS -->
<script>
window.ANNOUNCEMENTS_ITEMS = <?php
$items = [];
foreach ($activePopups as $announcement) {
if ($announcement->display_type == 'popup') {
$items[] = [
"src" => "#announcements_modal_" . $announcement->id,
"type" => "inline",
"midClick" => true,
"inline" => ["clone" => true],
"id" => $announcement->id,
"display_option" => $announcement->display_option,
];
}
}
echo json_encode($items);
?>;
</script>
<?php endif; ?>
<?php
$announcements = Announcement::findByPageId((int)$this->id);
$activePopups = [];
$activeBanners = [];
$tz = new DateTimeZone('Asia/Kuala_Lumpur');
$now = new DateTime('now', $tz);
foreach ($announcements as $announcement) {
if ((int)$announcement->status === 1) {
$start = new DateTime($announcement->start_date, $tz);
$end = new DateTime($announcement->end_date, $tz);
if ($now >= $start && $now <= $end) {
if ($announcement->display_type == 'popup') {
$activePopups[] = $announcement;
} else if ($announcement->display_type == 'banner') {
$activeBanners[] = $announcement;
}
}
}
}
$fullscreen_status = htmlentities(ModuleSetting::findSetting('announcement', 'Fullscreen'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
$popup_autoplay = htmlentities(ModuleSetting::findSetting('announcement', 'Popup Autoplay'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
$banner_autoplay = htmlentities(ModuleSetting::findSetting('announcement', 'Banner Autoplay'), ENT_COMPAT, 'UTF-8') == 1 ? 'On' : 'Off';
echo '<input type="hidden" id="fullscreen_status" value="'.$fullscreen_status.'">';
echo '<input type="hidden" id="popup_autoplay" value="'.$popup_autoplay.'">';
echo '<input type="hidden" id="banner_autoplay" value="'.$banner_autoplay.'">';
?>
<!-- Hidden announcement popups -->
<?php foreach ($activePopups as $announcement):
$modalId = "announcements_modal_" . $announcement->id;
?>
<div id="<?= $modalId ?>" class="announcements-popup mfp-hide">
<div class="announcement-slide">
<h2><?= $announcement->name ?></h2>
<div class="announcement-content"><?= $announcement->description ?></div>
<?php if ((int)$announcement->btn_status == 1) {
$link = '#';
if ($announcement->btn_type == 'external_link') {
$link = $announcement->btn_external_link;
} else if ($announcement->btn_type == 'assign_to_page') {
$page = Page::findById((int)$announcement->btn_page_id);
$link = URL_PUBLIC . (USE_MOD_REWRITE ? '' : '?') . $page->getUri() . ($page->getUri() ? URL_SUFFIX : '');
}
echo '<a class="btn-blue" href="'.$link.'">'.$announcement->btn_caption.'</a>';
}
?>
</div>
</div>
<?php endforeach; ?>
<div class="banner-announcement">
<?php foreach ($activeBanners as $announcement): ?>
<div>
<div class="announcement-container">
<input type="hidden" class="announcement_id" value="<?= $announcement->id ?>">
<input type="hidden" class="announcement_display_option" value="<?= $announcement->display_option ?>">
<h2><?= $announcement->name ?></h2>
<div class="announcement-content"><?= $announcement->description ?></div>
<?php if ((int)$announcement->btn_status == 1) {
$link = '#';
if ($announcement->btn_type == 'external_link') {
$link = $announcement->btn_external_link;
} else if ($announcement->btn_type == 'assign_to_page') {
$page = Page::findById((int)$announcement->btn_page_id);
$link = URL_PUBLIC . (USE_MOD_REWRITE ? '' : '?') . $page->getUri() . ($page->getUri() ? URL_SUFFIX : '');
}
echo '<a href="'.$link.'">'.$announcement->btn_caption.' ></a>';
}
?>
<div class="slide-counter"></div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php
if (!empty($activePopups)):
?>
<!-- Pass announcements data to JS -->
<script>
window.ANNOUNCEMENTS_ITEMS = <?php
$items = [];
foreach ($activePopups as $announcement) {
if ($announcement->display_type == 'popup') {
$items[] = [
"src" => "#announcements_modal_" . $announcement->id,
"type" => "inline",
"midClick" => true,
"inline" => ["clone" => true],
"id" => $announcement->id,
"display_option" => $announcement->display_option,
];
}
}
echo json_encode($items);
?>;
</script>
<?php endif; ?>
Create New Snippet: js-magnific
<!-- Magnific Popup CSS -->
<link rel="stylesheet" href="<?php echo THEME_PATH ?>js/magnific-popup.min.css">
<!-- Magnific Popup JS -->
<script src="<?php echo THEME_PATH ?>js/jquery.magnific-popup.min.js"></script>
<!-- Magnific Popup CSS -->
<link rel="stylesheet" href="<?php echo THEME_PATH ?>js/magnific-popup.min.css">
<!-- Magnific Popup JS -->
<script src="<?php echo THEME_PATH ?>js/jquery.magnific-popup.min.js"></script>
Create New Snippet: js-slick
<!-- Slick CSS -->
<link rel="stylesheet" href="<?php echo THEME_PATH ?>js/slick.css">
<!-- Slick JS -->
<script src="<?php echo THEME_PATH ?>js/slick.min.js"></script>
<!-- Slick CSS -->
<link rel="stylesheet" href="<?php echo THEME_PATH ?>js/slick.css">
<!-- Slick JS -->
<script src="<?php echo THEME_PATH ?>js/slick.min.js"></script>
Include: 3 new snippet to all Layout
<!-- in <head> section-->
<?php $this->includeSnippet('js-magnific') ?>
<?php $this->includeSnippet('js-slick') ?>
<!-- after <body> tag insert : -->
<?php $this->includeSnippet('announcement') ?>
<!-- in <head> section-->
<?php $this->includeSnippet('js-magnific') ?>
<?php $this->includeSnippet('js-slick') ?>
<!-- after <body> tag insert : -->
<?php $this->includeSnippet('announcement') ?>
Update: default.css
/* For Announcement */
:root {
--minimum-width: 1200px;
--bg-color-blue: #0c3c7c;
}
.mfp-content {
position: absolute !important;
top: 50%;
left: 50%;
width: var(--minimum-width) !important;
height: 80%;
transform: translate(-50%, -50%);
background-color: #fff;
border-radius: 10px;
padding: 2rem 0 2.5rem 0;
display: flex !important;
align-items: center;
justify-content: center;
}
.announcements-popup {
width: 100%;
max-height: 100%;
}
.announcement-slide {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
max-height: 100%;
}
.announcement-content {
margin: 1rem 0;
max-width: 75%;
overflow: auto;
}
.announcement-indicators {
position: absolute;
bottom: 0.5rem;
left: 50%;
transform: translateX(-50%);
}
.announcement-indicators .dot {
display: inline-block;
width: 10px;
height: 10px;
margin: 0 5px;
cursor: pointer;
background: url('themes/dot-inactive.png') no-repeat center center !important;
background-size: 40px 40px !important;
}
.announcement-indicators .dot.active {
background: url('themes/dot-active.png') no-repeat center center !important;
background-size: 40px 40px !important;
}
.mfp-arrow:before,
.mfp-arrow:after {
content: none !important; /* remove triangles */
}
.mfp-arrow-left {
background: url('themes/arrow-left.png') no-repeat center center !important;
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.mfp-arrow-right {
background: url('themes/arrow-right.png') no-repeat center center !important;
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.mfp-arrow-left {
left: -5rem !important;
}
.mfp-arrow-right {
right: -5rem !important;
}
.mfp-close {
background: url('themes/close.png') no-repeat center center !important;
background-size: 15px 15px !important;
width: 20px;
height: 20px;
}
.mfp-content.fullscreen {
height: 100% !important;
width: 100% !important;
padding: 0 !important;
border-radius: 0 !important;
}
.mfp-content.fullscreen .mfp-arrow-left {
left: 0 !important;
}
.mfp-content.fullscreen .mfp-arrow-right {
right: 0 !important;
}
@media only screen and (max-width: 1400px) {
.mfp-content {
width: 100% !important;
}
.mfp-content .mfp-arrow-left {
left: 0 !important;
}
.mfp-content .mfp-arrow-right {
right: 0 !important;
}
}
/* For Banner Announcement */
.banner-announcement {
color: white;
background-color: var(--bg-color-blue);
position: relative;
}
.banner-announcement h2 {
color: white;
}
.banner-announcement .slick-prev {
left: 0 !important;
background: url('themes/arrow-left.png') no-repeat center center !important;
}
.banner-announcement .slick-next {
right: 0 !important;
background: url('themes/arrow-right.png') no-repeat center center !important;
}
.banner-announcement .slick-prev,
.banner-announcement .slick-next {
margin-top: 0 !important;
transform: translateY(-50%);
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.banner-announcement .announcement-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0.5rem 2rem;
}
.slide-counter {
font-weight: bold;
position: absolute;
bottom: 0.5rem;
right: 4rem;
}
.slick-slide {
position: relative;
}
.banner-announcement .close-banner-announcement {
cursor: pointer;
position: absolute;
top: 0.5rem;
right: 0.5rem;
border: none;
background: url('themes/close.png') no-repeat center center !important;
background-size: 15px 15px !important;
width: 20px;
height: 20px;
}
.banner-announcement .slick-prev:hover,
.banner-announcement .slick-next:hover,
.banner-announcement .close-banner-announcement:hover {
opacity: 0.65;
}
.banner-announcement .announcement-container > a:visited {
color: #f7a81b;
}
.banner-announcement .announcement-content {
max-width: 85%;
height: 5rem;
}
@media only screen and (max-width: 1300px) {
body { min-width: auto; min-width: initial; min-width: none; }
.wrapper { max-width: auto; max-width: initial; max-width: none; width: auto; width: initial; padding: 50px 30px; }
#header-container { width: auto; width: initial; }
#menu-top { margin-left: 185px; }
#menu a, #menu a:visited { padding: 30px 15px; }
#highlights .item .details { min-height: 350px; }
#donate-zone .wrapper { padding: 40px 30px; }
#past-project-list .wrapper, #upcoming-project-list .wrapper, #ongoing-project-list .wrapper, #event-list .wrapper, #news-list .wrapper, #fellowship-list .wrapper { padding: 0px 30px; }
body.project-info .date { margin-right: 12px; margin-bottom: 12px; }
body.project-info .text { margin-left: 100px; }
#ry-menu .wrapper { padding: 0px 50px; }
#ry-menu .slick-prev { left: 15px; }
#ry-menu .slick-next { right: 15px; }
#footer { padding: 40px 30px; }
}
@media only screen and (max-width: 1150px) {
#logo { position: relative; text-align: center; margin-bottom: 10px; }
#menu-top { position: initial; margin: auto; text-align: center; }
#menu{ height: 38px; text-align: center; }
#menu a, #menu a:visited { padding: 5px 15px 18px 15px; }
#menu ul ul { top: 38px; padding-top: 0px; }
#menu ul li { display: inline-block; *display: inline; zoom: 1; float: none; }
#banner-contant { top: 147px; margin-bottom: 147px;}
#volunteer-expertise ul li { width: 26%; }
#volunteer-expertise ul { text-align: left; }
#social-media-icons { margin: 10px 0px; position: absolute; top: 0px; right: 20px; }
#footer #social-media-icons { position: relative; margin: 20px 0px; right: 0px; }
}
@media only screen and (max-width: 1024px) {
body { font-size: 14px; }
.nivo-directionNav a { width: 40px !important; height: 40px !important; background-size: 40px; }
#menu { height: auto; height: initial; }
#menu a, #menu a:visited { padding: 5px 10px 10px 10px; }
#menu ul ul { top: 29px; }
#social-media-icons a { margin: 0px 10px; }
.nivo-prevNav { padding-left: 30px !important; background-position-x: 30px !important; }
.nivo-nextNav { padding-right: 30px !important; }
#banner-contant { top: 137px; margin-bottom: 137px;}
h1 { font-size: 32px; }
#venue-zone .logo, #venue-zone .venue { padding-right: 2%; }
#venue-zone .wrapper { display: block; }
#venue-zone .logo { display: block; width: 100%; padding-right: 0px; }
#venue-zone .logo img { margin: 0px auto 20px auto; }
#venue-zone .venue { display: block; float: left; width: 46%; padding: 0px 1.5%; }
#venue-zone .datetime { display: block; float: right; width: 46%; padding: 0px 1.5%; }
#highlights .item .details > div { padding: 30px 50px; }
#highlights .item .details { min-height: auto; min-height: initial; min-height: none; }
#donate-zone { font-size: 16px; }
#donate-zone .btn a { font-size: 16px; }
.rotary-club-of-kuching-unity-city #main-content table { margin-left: 0px; }
.rotary-club-of-kuching-unity-city table.seven-focus-area ol, .rotary-club-of-kuching-unity-city table.four-way-test ol { margin: 0px 30px; }
.rotary-club-of-kuching-unity-city table.four-way-test td:first-child, .rotary-club-of-kuching-unity-city table.seven-focus-area td:last-child { padding: 120px 30px 30px 30px !important; }
.rotary-club-of-kuching-unity-city table.seven-focus-area tr { position: relative; }
.rotary-club-of-kuching-unity-city table.seven-focus-area td:first-child { position: absolute; width: 94%; padding: 30px 3% !important; left: 0px; }
.rotary-club-of-kuching-unity-city table.seven-focus-area h2, .rotary-club-of-kuching-unity-city table.four-way-test h2 { line-height: 40px; font-size: 35px; }
.rotary-club-of-kuching-unity-city table.four-way-test tr { position: relative; }
.rotary-club-of-kuching-unity-city table.four-way-test td:last-child { position: absolute; width: 94%; left: 0px; padding: 30px 3%; }
.rotary-club-of-kuching-unity-city table.four-way-test h2 span { display: inline-block; *display: inline; zoom: 1; font-size: 24px; }
body.project-info .wrapper { padding-bottom: 30px; }
body.project-info div.table .table-row { margin: 2%; width: 46%; }
body.project-info div.table.bullet h3 { font-size: 25px; }
body.project-info div.table .table-row .table-cell:last-child { font-size: 45px; line-height: 1; }
body.project-info div.table .table-row .table-cell .name { font-size: 22px; margin-bottom: 10px; }
body.project-info #youtube iframe { width: 600px; max-width: 100%; margin: 0px 0px 30px 0px; }
.gallery { margin-top: 35px; }
body.member #main-content table.theme td { width: 100% !important; float: left; box-sizing: border-box; }
#president-message .text { padding-left: 10px; }
#donation-list .item { width: 35%; margin: 0px 2.5% 30px 2.5%; }
#volunteer-list .item { width: 35%; margin: 0px 2.5% 30px 2.5%; }
#sitemap ul.col1, #sitemap ul.col2 { width: 100%; display: block; }
#sitemap ul.col1 { margin-bottom: 0px; }
#sitemap ul.col2 { margin-top: 0px; }
#story-list .tab-menu .cat a { padding: 8px 18px; }
#story-list .list .story { width: 20%; margin: 0px 2.5% 30px 2.5%; }
/* .mfp-container { padding-left: 10px !important; padding-right: 35px !important; } */
/* .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { padding: 20px !important; } */
/* .mfp-close { width: 30px !important; height: 30px !important; right: -30px !important; } */
a.link-spay-popup img { height: 40px; }
.footermenu a { margin: 0px 15px 10px 15px; }
.footermenu span.separator:first-child { display: none; }
#footer-menu2 { margin-left: 0px; display: block; margin-top: 10px; }
}
@media only screen and (max-width: 880px) {
body { overflow-x: hidden; }
.project .items .item, #donate .project .items .item { width: 100%; margin-right: 0px; margin-bottom: 35px; }
.home .project .items .item.last, .project .items .item:last-child { margin-bottom: 0px; }
.project .items .item { }
.project .items .item .info { height: auto !important; height: initial !important; }
.project .items .item .info h2 { }
#project-zone a.link { margin-top: 30px; display: inline-block; *display: inline; zoom: 1; }
#donate-zone .desc { width: 100%; margin-bottom: 10px; }
#donate-zone .btn { width: 100%; }
#modal-content .item { padding: 35px; }
#newsevent-list .list .item { width: 100%; margin-right: 0px; margin-bottom: 35px; }
#newsevent-list .list .item .info { height: auto !important; height: initial !important; }
}
@media only screen and (max-width: 768px) {
h1 { font-size: 28px; }
#header-container { padding: 0px 30px; }
#menu { display: none; }
#mobile-menu { display: block; }
.slicknav_btn { position: absolute !important; right: 30px; top: 45px; }
#logo { text-align: left; margin-bottom: 0px; }
#menu-top { margin-bottom: 10px; }
.nivo-controlNav { padding: 5px 0px; }
.nivo-controlNav a { height: 18px !important; width: 18px !important; background-size: cover !important; }
#banner-contant { top: 108px; margin-bottom: 108px; }
.wrapper { padding: 40px 30px; }
body { font-size: 14px; }
.breadcrumb a, .breadcrumb-current, .btn-blue, a.btn-blue { font-size: 13px; }
table.twocols td { float:left; width: 100% !important; margin-bottom: 20px; }
table.twocols td img { margin: auto; }
.rotary-club-of-kuching-unity-city #main-content .btn-blue { width: 180px; }
.rotary-club-of-kuching-unity-city #main-content table.clubhistory td:last-child { width: 95px !important; }
.rotary-club-of-kuching-unity-city #main-content table.clubhistory td { padding: 15px 10px; }
#volunteer-expertise ul li { width: 40%; }
#venue-zone .venue { width: 96%; padding: 0px 2%; border-right: none; margin-bottom: 30px; }
#venue-zone .datetime { width: 96%; padding: 0px 2%; }
#highlights .item a.img { width: 100%; display: block; }
#highlights .item .details { width: 100%; float: left; height: auto !important; height: initial !important; }
#highlights .item .details > div { text-align: center; }
#donate-zone { font-size: 15px; }
#donate-zone .btn a { font-size: 15px; }
#president-message .img { display: block; text-align: center; }
#president-message .img img { margin: 0px auto 20px auto; }
#president-message .text { padding: 0px; }
#president-message .text h2 { text-align: center; }
body.project-info .date { margin-right: 0px; margin-bottom: 0px; }
body.project-info div.table { margin-top: 30px; }
body.project-info div.table .table-row { width: 96%; margin: 0px 2% 25px 2%; }
body.project-info div.table .table-row:last-child { margin-bottom: 0px; }
body.project-info .text { margin-left: 85px; }
.album-cover { margin-right: 4%!important; width: 48%; margin-bottom: 15px; }
.album-cover.col2 { margin-right: 0!important; }
#member-list .item { width: 45%; margin-bottom: 35px; max-width: auto; max-width: initial; max-width: none; }
#member-page p { padding: 0px; }
#magazine-list .wrapper { padding-bottom: 10px; }
#magazine-list .items >.item { width: 48%; margin-right: 4%; }
#magazine-list .items >.item.even { margin-right: 0px; }
#award-list .wrapper { padding-bottom: 10px; }
#award-list>.item { width: 48%; margin-right: 4%; }
#award-list>.item.even { margin-right: 0px; }
.tab-menu .cat a { padding: 6px 20px; border-radius: 15px 15px 0px 0px; margin: 0px 2px; border: solid 1px #fff; border-bottom: none; line-height: 1; }
#story-list .tab-menu .cat { display: table; float: left; width: 48%; margin: 0px 1%; }
#story-list .tab-menu .cat a { height: 25px; display: table-cell; vertical-align: middle; }
#story-list .tab-menu >div::after { content: ""; clear: both; display: block; }
#story-list .featured .story .img { float: none !important; width: auto; width: initial; }
#story-list .featured .story .text { float: none; width: 100%; display: block; height: auto; height: initial; }
#story-list .featured .story .text > div { padding: 0px; text-align: center; }
#story-list .featured .story .text > div .story { text-align: justify; }
#story-list .list { margin-top: 20px; text-align: center; }
#story-list .list .story { width: 35%; float: none; display: inline-block; *display: inline; zoom: 1; margin: 0px 5% 30px 5%; }
.tbContactform td { width: 100%; float: left; }
.tbContactform td[colspan="2"] input, .tbContactform input.text { margin: 0px 0px 15px 0px; width: 93.5%; padding: 14px 3%; }
.tbContactform textarea { margin: 0px 0px 15px 0px; padding: 14px 3%; width: 93.5%; }
td.captcha { text-align: center; }div.g-recaptcha { display: inline-block; *display: inline; zoom: 1; width: 100%; }
div.g-recaptcha > div { width: 100% !important; height: auto !important; height: initial !important; height: none !important; max-width: 304px; margin: auto; }
div.g-recaptcha iframe { width: 100% !important; }
.tbContactform input[type="button"] { margin: 20px auto 0px auto !important; width: 130px; }
.tbContactform td.button { text-align: center !important; }
}
@media only screen and (max-width:650px){
.rotary-club-of-kuching-unity-city table.priorities td { float: left; width: 100%; }
.rotary-club-of-kuching-unity-city table.priorities td:first-child { padding-bottom: 0px; }
.rotary-club-of-kuching-unity-city table.priorities td:last-child { padding-top: 0px; }
#donation-list .item { width: 80%; display: block; max-width: 80%; margin: 0px auto 30px auto; text-align: center; }
#volunteer-list .item { width: 80%; display: block; max-width: 80%; margin: 0px auto 30px auto; text-align: center; }
#donation-list .item h2, #volunteer-list .item h2 { width: 250px !important; height: initial !important; display: block; }
#donation-list .item .info, #volunteer-list .item .info { height: auto !important; height: initial !important; }
#magazine-list .items >.item a { padding: 15px; }
#award-list>.item>.frame { padding: 15px; }
#story-list .list .story { width: 40%; }
#story-list .tab-menu .cat a { height: 35px; padding: 5px 20px; }
}
@media only screen and (max-width:550px){
.rotary-club-of-kuching-unity-city table.four-way-test h2, .rotary-club-of-kuching-unity-city table.seven-focus-area h2 { font-size: 25px; }
#member-list .item .rotary_year { font-size: 18px; }
#member-list .item h3 { font-size: 14px; }
#member-list .item a.btn-blue { padding: 12px 15px; }
}
/* For Announcement */
:root {
--minimum-width: 1200px;
--bg-color-blue: #0c3c7c;
}
.mfp-content {
position: absolute !important;
top: 50%;
left: 50%;
width: var(--minimum-width) !important;
height: 80%;
transform: translate(-50%, -50%);
background-color: #fff;
border-radius: 10px;
padding: 2rem 0 2.5rem 0;
display: flex !important;
align-items: center;
justify-content: center;
}
.announcements-popup {
width: 100%;
max-height: 100%;
}
.announcement-slide {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
max-height: 100%;
}
.announcement-content {
margin: 1rem 0;
max-width: 75%;
overflow: auto;
}
.announcement-indicators {
position: absolute;
bottom: 0.5rem;
left: 50%;
transform: translateX(-50%);
}
.announcement-indicators .dot {
display: inline-block;
width: 10px;
height: 10px;
margin: 0 5px;
cursor: pointer;
background: url('themes/dot-inactive.png') no-repeat center center !important;
background-size: 40px 40px !important;
}
.announcement-indicators .dot.active {
background: url('themes/dot-active.png') no-repeat center center !important;
background-size: 40px 40px !important;
}
.mfp-arrow:before,
.mfp-arrow:after {
content: none !important; /* remove triangles */
}
.mfp-arrow-left {
background: url('themes/arrow-left.png') no-repeat center center !important;
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.mfp-arrow-right {
background: url('themes/arrow-right.png') no-repeat center center !important;
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.mfp-arrow-left {
left: -5rem !important;
}
.mfp-arrow-right {
right: -5rem !important;
}
.mfp-close {
background: url('themes/close.png') no-repeat center center !important;
background-size: 15px 15px !important;
width: 20px;
height: 20px;
}
.mfp-content.fullscreen {
height: 100% !important;
width: 100% !important;
padding: 0 !important;
border-radius: 0 !important;
}
.mfp-content.fullscreen .mfp-arrow-left {
left: 0 !important;
}
.mfp-content.fullscreen .mfp-arrow-right {
right: 0 !important;
}
@media only screen and (max-width: 1400px) {
.mfp-content {
width: 100% !important;
}
.mfp-content .mfp-arrow-left {
left: 0 !important;
}
.mfp-content .mfp-arrow-right {
right: 0 !important;
}
}
/* For Banner Announcement */
.banner-announcement {
color: white;
background-color: var(--bg-color-blue);
position: relative;
}
.banner-announcement h2 {
color: white;
}
.banner-announcement .slick-prev {
left: 0 !important;
background: url('themes/arrow-left.png') no-repeat center center !important;
}
.banner-announcement .slick-next {
right: 0 !important;
background: url('themes/arrow-right.png') no-repeat center center !important;
}
.banner-announcement .slick-prev,
.banner-announcement .slick-next {
margin-top: 0 !important;
transform: translateY(-50%);
background-size: 30px 30px !important;
width: 40px;
height: 40px;
}
.banner-announcement .announcement-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0.5rem 2rem;
}
.slide-counter {
font-weight: bold;
position: absolute;
bottom: 0.5rem;
right: 4rem;
}
.slick-slide {
position: relative;
}
.banner-announcement .close-banner-announcement {
cursor: pointer;
position: absolute;
top: 0.5rem;
right: 0.5rem;
border: none;
background: url('themes/close.png') no-repeat center center !important;
background-size: 15px 15px !important;
width: 20px;
height: 20px;
}
.banner-announcement .slick-prev:hover,
.banner-announcement .slick-next:hover,
.banner-announcement .close-banner-announcement:hover {
opacity: 0.65;
}
.banner-announcement .announcement-container > a:visited {
color: #f7a81b;
}
.banner-announcement .announcement-content {
max-width: 85%;
height: 5rem;
}
@media only screen and (max-width: 1300px) {
body { min-width: auto; min-width: initial; min-width: none; }
.wrapper { max-width: auto; max-width: initial; max-width: none; width: auto; width: initial; padding: 50px 30px; }
#header-container { width: auto; width: initial; }
#menu-top { margin-left: 185px; }
#menu a, #menu a:visited { padding: 30px 15px; }
#highlights .item .details { min-height: 350px; }
#donate-zone .wrapper { padding: 40px 30px; }
#past-project-list .wrapper, #upcoming-project-list .wrapper, #ongoing-project-list .wrapper, #event-list .wrapper, #news-list .wrapper, #fellowship-list .wrapper { padding: 0px 30px; }
body.project-info .date { margin-right: 12px; margin-bottom: 12px; }
body.project-info .text { margin-left: 100px; }
#ry-menu .wrapper { padding: 0px 50px; }
#ry-menu .slick-prev { left: 15px; }
#ry-menu .slick-next { right: 15px; }
#footer { padding: 40px 30px; }
}
@media only screen and (max-width: 1150px) {
#logo { position: relative; text-align: center; margin-bottom: 10px; }
#menu-top { position: initial; margin: auto; text-align: center; }
#menu{ height: 38px; text-align: center; }
#menu a, #menu a:visited { padding: 5px 15px 18px 15px; }
#menu ul ul { top: 38px; padding-top: 0px; }
#menu ul li { display: inline-block; *display: inline; zoom: 1; float: none; }
#banner-contant { top: 147px; margin-bottom: 147px;}
#volunteer-expertise ul li { width: 26%; }
#volunteer-expertise ul { text-align: left; }
#social-media-icons { margin: 10px 0px; position: absolute; top: 0px; right: 20px; }
#footer #social-media-icons { position: relative; margin: 20px 0px; right: 0px; }
}
@media only screen and (max-width: 1024px) {
body { font-size: 14px; }
.nivo-directionNav a { width: 40px !important; height: 40px !important; background-size: 40px; }
#menu { height: auto; height: initial; }
#menu a, #menu a:visited { padding: 5px 10px 10px 10px; }
#menu ul ul { top: 29px; }
#social-media-icons a { margin: 0px 10px; }
.nivo-prevNav { padding-left: 30px !important; background-position-x: 30px !important; }
.nivo-nextNav { padding-right: 30px !important; }
#banner-contant { top: 137px; margin-bottom: 137px;}
h1 { font-size: 32px; }
#venue-zone .logo, #venue-zone .venue { padding-right: 2%; }
#venue-zone .wrapper { display: block; }
#venue-zone .logo { display: block; width: 100%; padding-right: 0px; }
#venue-zone .logo img { margin: 0px auto 20px auto; }
#venue-zone .venue { display: block; float: left; width: 46%; padding: 0px 1.5%; }
#venue-zone .datetime { display: block; float: right; width: 46%; padding: 0px 1.5%; }
#highlights .item .details > div { padding: 30px 50px; }
#highlights .item .details { min-height: auto; min-height: initial; min-height: none; }
#donate-zone { font-size: 16px; }
#donate-zone .btn a { font-size: 16px; }
.rotary-club-of-kuching-unity-city #main-content table { margin-left: 0px; }
.rotary-club-of-kuching-unity-city table.seven-focus-area ol, .rotary-club-of-kuching-unity-city table.four-way-test ol { margin: 0px 30px; }
.rotary-club-of-kuching-unity-city table.four-way-test td:first-child, .rotary-club-of-kuching-unity-city table.seven-focus-area td:last-child { padding: 120px 30px 30px 30px !important; }
.rotary-club-of-kuching-unity-city table.seven-focus-area tr { position: relative; }
.rotary-club-of-kuching-unity-city table.seven-focus-area td:first-child { position: absolute; width: 94%; padding: 30px 3% !important; left: 0px; }
.rotary-club-of-kuching-unity-city table.seven-focus-area h2, .rotary-club-of-kuching-unity-city table.four-way-test h2 { line-height: 40px; font-size: 35px; }
.rotary-club-of-kuching-unity-city table.four-way-test tr { position: relative; }
.rotary-club-of-kuching-unity-city table.four-way-test td:last-child { position: absolute; width: 94%; left: 0px; padding: 30px 3%; }
.rotary-club-of-kuching-unity-city table.four-way-test h2 span { display: inline-block; *display: inline; zoom: 1; font-size: 24px; }
body.project-info .wrapper { padding-bottom: 30px; }
body.project-info div.table .table-row { margin: 2%; width: 46%; }
body.project-info div.table.bullet h3 { font-size: 25px; }
body.project-info div.table .table-row .table-cell:last-child { font-size: 45px; line-height: 1; }
body.project-info div.table .table-row .table-cell .name { font-size: 22px; margin-bottom: 10px; }
body.project-info #youtube iframe { width: 600px; max-width: 100%; margin: 0px 0px 30px 0px; }
.gallery { margin-top: 35px; }
body.member #main-content table.theme td { width: 100% !important; float: left; box-sizing: border-box; }
#president-message .text { padding-left: 10px; }
#donation-list .item { width: 35%; margin: 0px 2.5% 30px 2.5%; }
#volunteer-list .item { width: 35%; margin: 0px 2.5% 30px 2.5%; }
#sitemap ul.col1, #sitemap ul.col2 { width: 100%; display: block; }
#sitemap ul.col1 { margin-bottom: 0px; }
#sitemap ul.col2 { margin-top: 0px; }
#story-list .tab-menu .cat a { padding: 8px 18px; }
#story-list .list .story { width: 20%; margin: 0px 2.5% 30px 2.5%; }
/* .mfp-container { padding-left: 10px !important; padding-right: 35px !important; } */
/* .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { padding: 20px !important; } */
/* .mfp-close { width: 30px !important; height: 30px !important; right: -30px !important; } */
a.link-spay-popup img { height: 40px; }
.footermenu a { margin: 0px 15px 10px 15px; }
.footermenu span.separator:first-child { display: none; }
#footer-menu2 { margin-left: 0px; display: block; margin-top: 10px; }
}
@media only screen and (max-width: 880px) {
body { overflow-x: hidden; }
.project .items .item, #donate .project .items .item { width: 100%; margin-right: 0px; margin-bottom: 35px; }
.home .project .items .item.last, .project .items .item:last-child { margin-bottom: 0px; }
.project .items .item { }
.project .items .item .info { height: auto !important; height: initial !important; }
.project .items .item .info h2 { }
#project-zone a.link { margin-top: 30px; display: inline-block; *display: inline; zoom: 1; }
#donate-zone .desc { width: 100%; margin-bottom: 10px; }
#donate-zone .btn { width: 100%; }
#modal-content .item { padding: 35px; }
#newsevent-list .list .item { width: 100%; margin-right: 0px; margin-bottom: 35px; }
#newsevent-list .list .item .info { height: auto !important; height: initial !important; }
}
@media only screen and (max-width: 768px) {
h1 { font-size: 28px; }
#header-container { padding: 0px 30px; }
#menu { display: none; }
#mobile-menu { display: block; }
.slicknav_btn { position: absolute !important; right: 30px; top: 45px; }
#logo { text-align: left; margin-bottom: 0px; }
#menu-top { margin-bottom: 10px; }
.nivo-controlNav { padding: 5px 0px; }
.nivo-controlNav a { height: 18px !important; width: 18px !important; background-size: cover !important; }
#banner-contant { top: 108px; margin-bottom: 108px; }
.wrapper { padding: 40px 30px; }
body { font-size: 14px; }
.breadcrumb a, .breadcrumb-current, .btn-blue, a.btn-blue { font-size: 13px; }
table.twocols td { float:left; width: 100% !important; margin-bottom: 20px; }
table.twocols td img { margin: auto; }
.rotary-club-of-kuching-unity-city #main-content .btn-blue { width: 180px; }
.rotary-club-of-kuching-unity-city #main-content table.clubhistory td:last-child { width: 95px !important; }
.rotary-club-of-kuching-unity-city #main-content table.clubhistory td { padding: 15px 10px; }
#volunteer-expertise ul li { width: 40%; }
#venue-zone .venue { width: 96%; padding: 0px 2%; border-right: none; margin-bottom: 30px; }
#venue-zone .datetime { width: 96%; padding: 0px 2%; }
#highlights .item a.img { width: 100%; display: block; }
#highlights .item .details { width: 100%; float: left; height: auto !important; height: initial !important; }
#highlights .item .details > div { text-align: center; }
#donate-zone { font-size: 15px; }
#donate-zone .btn a { font-size: 15px; }
#president-message .img { display: block; text-align: center; }
#president-message .img img { margin: 0px auto 20px auto; }
#president-message .text { padding: 0px; }
#president-message .text h2 { text-align: center; }
body.project-info .date { margin-right: 0px; margin-bottom: 0px; }
body.project-info div.table { margin-top: 30px; }
body.project-info div.table .table-row { width: 96%; margin: 0px 2% 25px 2%; }
body.project-info div.table .table-row:last-child { margin-bottom: 0px; }
body.project-info .text { margin-left: 85px; }
.album-cover { margin-right: 4%!important; width: 48%; margin-bottom: 15px; }
.album-cover.col2 { margin-right: 0!important; }
#member-list .item { width: 45%; margin-bottom: 35px; max-width: auto; max-width: initial; max-width: none; }
#member-page p { padding: 0px; }
#magazine-list .wrapper { padding-bottom: 10px; }
#magazine-list .items >.item { width: 48%; margin-right: 4%; }
#magazine-list .items >.item.even { margin-right: 0px; }
#award-list .wrapper { padding-bottom: 10px; }
#award-list>.item { width: 48%; margin-right: 4%; }
#award-list>.item.even { margin-right: 0px; }
.tab-menu .cat a { padding: 6px 20px; border-radius: 15px 15px 0px 0px; margin: 0px 2px; border: solid 1px #fff; border-bottom: none; line-height: 1; }
#story-list .tab-menu .cat { display: table; float: left; width: 48%; margin: 0px 1%; }
#story-list .tab-menu .cat a { height: 25px; display: table-cell; vertical-align: middle; }
#story-list .tab-menu >div::after { content: ""; clear: both; display: block; }
#story-list .featured .story .img { float: none !important; width: auto; width: initial; }
#story-list .featured .story .text { float: none; width: 100%; display: block; height: auto; height: initial; }
#story-list .featured .story .text > div { padding: 0px; text-align: center; }
#story-list .featured .story .text > div .story { text-align: justify; }
#story-list .list { margin-top: 20px; text-align: center; }
#story-list .list .story { width: 35%; float: none; display: inline-block; *display: inline; zoom: 1; margin: 0px 5% 30px 5%; }
.tbContactform td { width: 100%; float: left; }
.tbContactform td[colspan="2"] input, .tbContactform input.text { margin: 0px 0px 15px 0px; width: 93.5%; padding: 14px 3%; }
.tbContactform textarea { margin: 0px 0px 15px 0px; padding: 14px 3%; width: 93.5%; }
td.captcha { text-align: center; }div.g-recaptcha { display: inline-block; *display: inline; zoom: 1; width: 100%; }
div.g-recaptcha > div { width: 100% !important; height: auto !important; height: initial !important; height: none !important; max-width: 304px; margin: auto; }
div.g-recaptcha iframe { width: 100% !important; }
.tbContactform input[type="button"] { margin: 20px auto 0px auto !important; width: 130px; }
.tbContactform td.button { text-align: center !important; }
}
@media only screen and (max-width:650px){
.rotary-club-of-kuching-unity-city table.priorities td { float: left; width: 100%; }
.rotary-club-of-kuching-unity-city table.priorities td:first-child { padding-bottom: 0px; }
.rotary-club-of-kuching-unity-city table.priorities td:last-child { padding-top: 0px; }
#donation-list .item { width: 80%; display: block; max-width: 80%; margin: 0px auto 30px auto; text-align: center; }
#volunteer-list .item { width: 80%; display: block; max-width: 80%; margin: 0px auto 30px auto; text-align: center; }
#donation-list .item h2, #volunteer-list .item h2 { width: 250px !important; height: initial !important; display: block; }
#donation-list .item .info, #volunteer-list .item .info { height: auto !important; height: initial !important; }
#magazine-list .items >.item a { padding: 15px; }
#award-list>.item>.frame { padding: 15px; }
#story-list .list .story { width: 40%; }
#story-list .tab-menu .cat a { height: 35px; padding: 5px 20px; }
}
@media only screen and (max-width:550px){
.rotary-club-of-kuching-unity-city table.four-way-test h2, .rotary-club-of-kuching-unity-city table.seven-focus-area h2 { font-size: 25px; }
#member-list .item .rotary_year { font-size: 18px; }
#member-list .item h3 { font-size: 14px; }
#member-list .item a.btn-blue { padding: 12px 15px; }
}
Update: rckuc.js
// Announcement
$(document).ready(function() {
// Banner Announcement
if ($(".banner-announcement").children().length) {
// filter per session
$(".announcement-container").each(function() {
let announcement_id = $(this).find(".announcement_id").val();
if (sessionStorage.getItem("announcements_modal_"+announcement_id) == "1") {
$(this).parent().remove();
}
})
// Numbering
$('.banner-announcement').on('init reInit afterChange', function(event, slick, currentSlide){
// currentSlide is undefined on init, so default to 0
var i = (currentSlide ? currentSlide : 0) + 1;
$('.slide-counter').text(i + ' / ' + slick.slideCount);
});
let banner_autoplay = $("#banner_autoplay").val() == 1;
if ($(".banner-announcement").children().length != 0) {
$('.banner-announcement').slick({
slidesToShow: 1, // show one notification at a time
slidesToScroll: 1,
arrows: true, // show left/right arrows
dots: false, // show navigation dots
infinite: true, // loop through notifications
autoplay: banner_autoplay, // automatically move to next
autoplaySpeed: 3000, // 3 seconds per slide
speed: 600, // transition speed
fade: false, // fade effect instead of slide (true = fade)
cssEase: 'ease-in-out', // smooth easing
pauseOnHover: true, // stop auto-play when user hovers
adaptiveHeight: true, // adjust height per slide
});
function setSessionViewed() {
$(".announcement-container").each(function() {
if ($(this).parents(".slick-active")) {
let announcement_id = $(this).find(".announcement_id").val();
let display_option = $(this).find(".announcement_display_option").val();
if (display_option === "per_session") {
sessionStorage.setItem("announcements_modal_"+announcement_id, '1');
}
}
})
}
setSessionViewed();
$(document).on("click", ".slick-arrow", function() {
setSessionViewed();
})
// Optional if you want a close button
$(".banner-announcement").append('<button class="close-banner-announcement"></button>');
$(document).on("click", "button.close-banner-announcement", function() {
$(".banner-announcement").remove();
})
}
}
// Popup Announcement
if (typeof window.ANNOUNCEMENTS_ITEMS !== "undefined" && window.ANNOUNCEMENTS_ITEMS.length !== 0) {
var items = window.ANNOUNCEMENTS_ITEMS;
// filter per session
items = items.filter(function (item) {
return sessionStorage.getItem(item.src) !== "1";
});
if (items.length != 0) {
$.magnificPopup.open({
items: items,
gallery: { enabled: true },
mainClass: "mfp-fade",
closeOnBgClick: false,
callbacks: {
open: function () {
var $content = $('.mfp-content');
$content.append($('.mfp-arrow-left'));
$content.append($('.mfp-arrow-right'));
$('.mfp-close').text("");
var mp = $.magnificPopup.instance;
var total = items.length;
var $content = $('.mfp-wrap .mfp-content');
if ($("#fullscreen_status").val() == 1) {
$content.addClass("fullscreen");
}
if (total > 1) {
var indicators = $('<div class="announcement-indicators"></div>');
for (var i = 0; i < total; i++) {
indicators.append('<span class="dot" data-index="' + i + '"></span>');
}
$(".mfp-content").append(indicators);
indicators.find(".dot").first().addClass("active");
$(document).on("mfpChange", function () {
indicators.find(".dot").removeClass("active")
.eq(mp.index).addClass("active");
});
indicators.find(".dot").on("click", function (e) {
e.preventDefault();
mp.goTo($(this).data("index"));
});
}
},
close: function () {
for (const item of items) {
if (item.display_option === "per_session") {
sessionStorage.setItem(item.src, '1');
}
}
$(document).off("mfpChange");
}
}
});
let popup_autoplay = $("#popup_autoplay").val() == 1;
if (popup_autoplay) {
let autoplayInterval;
function startAutoplay() {
// clear previous interval just in case
clearInterval(autoplayInterval);
// start a new interval
autoplayInterval = setInterval(function() {
$.magnificPopup.instance.next();
}, 3000);
}
// start autoplay initially
startAutoplay();
// stop autoplay when popup closes
$(document).on('mfpClose', function() {
clearInterval(autoplayInterval);
});
// reset interval when user clicks next/prev
$(document).on('click', '.mfp-arrow', function() {
setTimeout(() => {
startAutoplay();
}, 2000);
});
}
function setSlideHeight () {
$('.mfp-content').each(function() {
let maxHeight = $(this).height() - 120;
let contentHeight = $(this).find('.announcement-content').height();
if (maxHeight < contentHeight) {
$(this).find('.announcement-content').css("height", maxHeight + "px");
}
})
}
setSlideHeight();
$(window).on('resize', setSlideHeight);
}
}
})
// Announcement
$(document).ready(function() {
// Banner Announcement
if ($(".banner-announcement").children().length) {
// filter per session
$(".announcement-container").each(function() {
let announcement_id = $(this).find(".announcement_id").val();
if (sessionStorage.getItem("announcements_modal_"+announcement_id) == "1") {
$(this).parent().remove();
}
})
// Numbering
$('.banner-announcement').on('init reInit afterChange', function(event, slick, currentSlide){
// currentSlide is undefined on init, so default to 0
var i = (currentSlide ? currentSlide : 0) + 1;
$('.slide-counter').text(i + ' / ' + slick.slideCount);
});
let banner_autoplay = $("#banner_autoplay").val() == 1;
if ($(".banner-announcement").children().length != 0) {
$('.banner-announcement').slick({
slidesToShow: 1, // show one notification at a time
slidesToScroll: 1,
arrows: true, // show left/right arrows
dots: false, // show navigation dots
infinite: true, // loop through notifications
autoplay: banner_autoplay, // automatically move to next
autoplaySpeed: 3000, // 3 seconds per slide
speed: 600, // transition speed
fade: false, // fade effect instead of slide (true = fade)
cssEase: 'ease-in-out', // smooth easing
pauseOnHover: true, // stop auto-play when user hovers
adaptiveHeight: true, // adjust height per slide
});
function setSessionViewed() {
$(".announcement-container").each(function() {
if ($(this).parents(".slick-active")) {
let announcement_id = $(this).find(".announcement_id").val();
let display_option = $(this).find(".announcement_display_option").val();
if (display_option === "per_session") {
sessionStorage.setItem("announcements_modal_"+announcement_id, '1');
}
}
})
}
setSessionViewed();
$(document).on("click", ".slick-arrow", function() {
setSessionViewed();
})
// Optional if you want a close button
$(".banner-announcement").append('<button class="close-banner-announcement"></button>');
$(document).on("click", "button.close-banner-announcement", function() {
$(".banner-announcement").remove();
})
}
}
// Popup Announcement
if (typeof window.ANNOUNCEMENTS_ITEMS !== "undefined" && window.ANNOUNCEMENTS_ITEMS.length !== 0) {
var items = window.ANNOUNCEMENTS_ITEMS;
// filter per session
items = items.filter(function (item) {
return sessionStorage.getItem(item.src) !== "1";
});
if (items.length != 0) {
$.magnificPopup.open({
items: items,
gallery: { enabled: true },
mainClass: "mfp-fade",
closeOnBgClick: false,
callbacks: {
open: function () {
var $content = $('.mfp-content');
$content.append($('.mfp-arrow-left'));
$content.append($('.mfp-arrow-right'));
$('.mfp-close').text("");
var mp = $.magnificPopup.instance;
var total = items.length;
var $content = $('.mfp-wrap .mfp-content');
if ($("#fullscreen_status").val() == 1) {
$content.addClass("fullscreen");
}
if (total > 1) {
var indicators = $('<div class="announcement-indicators"></div>');
for (var i = 0; i < total; i++) {
indicators.append('<span class="dot" data-index="' + i + '"></span>');
}
$(".mfp-content").append(indicators);
indicators.find(".dot").first().addClass("active");
$(document).on("mfpChange", function () {
indicators.find(".dot").removeClass("active")
.eq(mp.index).addClass("active");
});
indicators.find(".dot").on("click", function (e) {
e.preventDefault();
mp.goTo($(this).data("index"));
});
}
},
close: function () {
for (const item of items) {
if (item.display_option === "per_session") {
sessionStorage.setItem(item.src, '1');
}
}
$(document).off("mfpChange");
}
}
});
let popup_autoplay = $("#popup_autoplay").val() == 1;
if (popup_autoplay) {
let autoplayInterval;
function startAutoplay() {
// clear previous interval just in case
clearInterval(autoplayInterval);
// start a new interval
autoplayInterval = setInterval(function() {
$.magnificPopup.instance.next();
}, 3000);
}
// start autoplay initially
startAutoplay();
// stop autoplay when popup closes
$(document).on('mfpClose', function() {
clearInterval(autoplayInterval);
});
// reset interval when user clicks next/prev
$(document).on('click', '.mfp-arrow', function() {
setTimeout(() => {
startAutoplay();
}, 2000);
});
}
function setSlideHeight () {
$('.mfp-content').each(function() {
let maxHeight = $(this).height() - 120;
let contentHeight = $(this).find('.announcement-content').height();
if (maxHeight < contentHeight) {
$(this).find('.announcement-content').css("height", maxHeight + "px");
}
})
}
setSlideHeight();
$(window).on('resize', setSlideHeight);
}
}
})
Copy all related files to your project and import sql table