วันอาทิตย์ที่ 14 กุมภาพันธ์ พ.ศ. 2559
django cms #6 Extending toolbar
toolbar คือแถบเครื่องมือสำหรับใช้งานใน django cms ที่เราจะเห็นก็ต่อเมื่อเราเพิ่มคำว่า ?edit ต่อท้าย url ที่ให้เรา login ก่อนจึงจะใช้งานได้ ในบทนี้เราจะทำการสร้าง extending toolbar คือสร้าง toolbar ขึ้นมาใช้งานเอง โดยเราจะสร้างให้ใช้งานสำหรับ polls appให้เราสร้างไฟล์ cms_toolbars.py ในไดเรกทอรี polls_plugin แล้วเขียนโค้ด ดังนี้
from django.utils.translation import ugettext_lazy as _ from cms.toolbar_pool import toolbar_pool from cms.toolbar_base import CMSToolbar from cms.utils.urlutils import admin_reverse from polls.models import Poll @toolbar_pool.register class PollToolbar(CMSToolbar): supported_apps = ( 'polls', 'polls_plugin', ) watch_models = [Poll,] def populate(self): if not self.is_current_app: return menu = self.toolbar.get_or_create_menu('poll-app', _('Polls')) menu.add_sideframe_item( name=_('Poll list'), url=admin_reverse('polls_poll_changelist'), ) menu.add_modal_item( name=_('Add new poll'), url=admin_reverse('polls_poll_add'), )
อธิบายโค้ดแต่ละส่วน
มีการอ้างถึง CMSToolbar subclass
ให้ใช้งานด้วยคำสั่ง @toolbar_pool_register
ให้ populate เป็น method สำหรับเพิ่ม item ลงไปใน menu
supported_apps ใส่ชื่อ apps ที่ใช้งาน toolbar นี้
watch_models ใส่ model ของ app
การทำงานของ populate() เริ่มต้นจะตรวจสอบก่อนว่า user อยู่นหน้าที่ support กับ toolbar นี้หรือไม่ จากนั้นค่อยสร้าง menu ของ toolbar นี้ ในที่นี้สร้าง sideframe ชื่อ Poll list สำหรับดู list polls และ modal ชื่อ Add new poll สำหรับสร้าง poll ใหม่
ทดลอง run server ใหม่แล้วสังเกตผล
ทดลองใช้ url polls จะเห็น menu Polls ปรากฏใน toolbar
ทดลองเข้าหน้า Poll page ก็ใช้งานได้ เช่นกัน
ลองดูจะเห็นมามีคำสั่ง Poll list กับ Add new poll
ทดลองเลือก Poll list จะแสดงหน้า list ของ poll ที่เราสร้าง แต่ถ้าเลือก Add new poll จะมีหน้าต่างขึ้นมาให้เราสร้าง poll ใหม่
สมัครสมาชิก:
ส่งความคิดเห็น
(
Atom
)



ไม่มีความคิดเห็น :
แสดงความคิดเห็น