forked from alaguraj/odoo-testing-addons
implement custom theme styling, blog page structure, and controller logic for Dine360 theme
This commit is contained in:
parent
612192c91e
commit
3429feece9
@ -9,7 +9,9 @@ def get_blogs():
|
|||||||
json_path = os.path.join(os.path.dirname(__file__), '../data/blogs.json')
|
json_path = os.path.join(os.path.dirname(__file__), '../data/blogs.json')
|
||||||
if os.path.exists(json_path):
|
if os.path.exists(json_path):
|
||||||
with open(json_path, 'r', encoding='utf-8-sig') as f:
|
with open(json_path, 'r', encoding='utf-8-sig') as f:
|
||||||
return json.load(f)
|
blogs = json.load(f)
|
||||||
|
# Reversing so the last added blog appears first
|
||||||
|
return blogs[::-1] if isinstance(blogs, list) else blogs
|
||||||
return []
|
return []
|
||||||
|
|
||||||
class ContactController(http.Controller):
|
class ContactController(http.Controller):
|
||||||
@ -74,11 +76,32 @@ class ContactController(http.Controller):
|
|||||||
return request.render('dine360_theme_chennora.contact_thank_you')
|
return request.render('dine360_theme_chennora.contact_thank_you')
|
||||||
|
|
||||||
class BlogController(http.Controller):
|
class BlogController(http.Controller):
|
||||||
@http.route(['/blog'], type='http', auth='public', website=True)
|
@http.route(['/blog', '/blog/page/<int:page>'], type='http', auth='public', website=True)
|
||||||
def blog_list(self, **post):
|
def blog_list(self, page=1, **post):
|
||||||
blog_posts = get_blogs()
|
all_blogs = get_blogs()
|
||||||
|
|
||||||
|
# Pagination Settings
|
||||||
|
per_page = 12
|
||||||
|
total = len(all_blogs)
|
||||||
|
|
||||||
|
# Odoo's built-in pager
|
||||||
|
pager = request.website.pager(
|
||||||
|
url='/blog',
|
||||||
|
total=total,
|
||||||
|
page=page,
|
||||||
|
step=per_page,
|
||||||
|
scope=5,
|
||||||
|
url_args=post,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Extract blogs for current page
|
||||||
|
start = (page - 1) * per_page
|
||||||
|
end = start + per_page
|
||||||
|
blogs_paged = all_blogs[start:end]
|
||||||
|
|
||||||
return request.render('dine360_theme_chennora.blog_page', {
|
return request.render('dine360_theme_chennora.blog_page', {
|
||||||
'blog_posts': blog_posts,
|
'blog_posts': blogs_paged,
|
||||||
|
'pager': pager,
|
||||||
})
|
})
|
||||||
|
|
||||||
@http.route(['/blog/<string:slug>'], type='http', auth='public', website=True)
|
@http.route(['/blog/<string:slug>'], type='http', auth='public', website=True)
|
||||||
|
|||||||
@ -1751,4 +1751,44 @@ body.o_edit_mode {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom Pagination Styling
|
||||||
|
.pagination {
|
||||||
|
.page-item {
|
||||||
|
margin: 0 4px;
|
||||||
|
|
||||||
|
.page-link {
|
||||||
|
border-radius: 50% !important;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
color: #04121D;
|
||||||
|
background-color: #fff;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-weight: 600;
|
||||||
|
|
||||||
|
&:hover, &:focus {
|
||||||
|
background-color: #FECD4F;
|
||||||
|
border-color: #FECD4F;
|
||||||
|
color: #04121D;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active .page-link {
|
||||||
|
background-color: #04121D !important;
|
||||||
|
border-color: #04121D !important;
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled .page-link {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
border-color: #ddd;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -61,6 +61,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Pagination -->
|
||||||
|
<div class="d-flex justify-content-center mt-5" t-if="pager and pager.get('page_count', 0) > 1">
|
||||||
|
<t t-call="website.pager"/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user