शुक्रवार, 26 फ़रवरी 2010

कैलेंडर क्लास – कोड इग्नाइटर

कैलेंडर क्लास से आप डायनेमिक रूप से कैलेंडर बना सकते हैं. आप कैलेंडर को टेम्प्लेटों के द्वारा फ़ार्मेट कर सकते हैं जिससे आपको डिजाइन के विभिन्न पहलुओं पर पूरा नियंत्रण मिलता है. यहां तक कि आप अपना डाटा भी कैलेंडर के प्रकोष्ठों में में डाल सकते हैं.

क्लास को आरंभ करना

कोड इग्नाइटर की ज्यादातर अन्य क्लासों की ही तरह यह क्लास भी आपके कंट्रोलर से $this->load->library फ़ंग्शन द्वारा आरंभ की जा सकती है.

$this->load->library('calendar');

एक बार लोड हो जाने के बाद कैलेंडर आब्जेक्ट को आप $this->calendar का प्रयोग करके उपयोग कर सकते हैं.

कैलेंडर प्रदर्शित करना

कैलेंडर को प्रदर्शित करने का यहां एक बहुत ही आसान उदाहरण दिया गया है.

$this->load->library('calendar');
echo $this->calendar->generate();

ऊपर दिया हुआ कोड आपके सर्वर के अनुसार बताए गए वर्तमान माह/वर्ष के आधार पर एक कैलेंडर तैयार कर देगा. किसी माह/वर्ष विशेष का कैलेंडर प्राप्त करने के लिए आपको निम्नलिखित जानकारी generate फ़ंग्शन से गुजारनी होगी:

$this->load->library('calendar');
echo $this->calendar->generate(2006, 6);

ऊपर दिया हुआ कोड सन २००६ के जून माह का कैलेंडर पैदा करेगा. पहला पैरामीटर वर्ष को बताता है और दूसरा माह को.

कैलेंडर के प्रकोष्ठों में अपने आंकड़े प्रवेश कराना

कैलेंडर के प्रकोष्ठों में अपने आंकड़ों को जोड़ने के लिए आपको एक associative array का निर्माण करना होगा जिसकी कुंजियां दिनों को बताएं. एरे को generate फ़ंग्शन के तीसरे पैरामीटर के तौर पर गुजारा जाता है.

$this->load->library('calendar');
$data = array(
               3  => 'http://example.com/news/article/2006/03/',
               7  => 'http://example.com/news/article/2006/07/',
               13 => 'http://example.com/news/article/2006/13/',
               26 => 'http://example.com/news/article/2006/26/'
             );
echo $this->calendar->generate(2006, 6, $data);

ऊपर के उदाहरण में दिनांक ३,७,१३ तथा १६ लिंक बन जाएंगे और वो आपके द्वारा बताए गये यूआरएलों को इंगित करेंगे.

कृपया ध्यान दें: सामान्यत: यह माना जाता है कि आपकी एरे में लिंक होंगे. कैलेंडर टेम्प्लेट वाले अनुभाग में बताया गया है कि आप प्रकोष्ठों में प्रविष्ट कराए गये आंकड़ों को किस प्रकार से संभाला जाए, ताकि आप अलग तरह के आंकड़े भी गुजार पाएं.

प्रदर्शन वरीयताएं तय करना

आप सात वरीयता विकल्पों के द्वारा कैलेंडर के विभिन्न पहलुओं को नियंत्रित कर सकते हैं. वरीयताओं को तय करने के लिए आपको उनकी एक एरे बनाकर लोडिंग फ़ंग्शन के दूसरे पैरामीटर के रूप में गुजारना होता है. यहां एक उदाहरण है:

$prefs = array (
               'start_day'    => 'saturday',
               'month_type'   => 'long',
               'day_type'     => 'short'
             );
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();

ऊपर दिया हुआ कोड कैलेंडर को शनिवार को शुरू करेगा, महीनों के नाम लंबे(long) रूप में शीर्षक के तौर पर लिखेगा तथा दिनों के नाम संक्षिप्त(short) रूप में लिखेगा. वरीयता विकल्पों के संबंध में अधिक जानकारी नीचे दी गई है.

Preference Default Value Options Description
template None None A string containing your calendar template. See the template section below.
local_time time() None A Unix timestamp corresponding to the current time.
start_day sunday Any week day (sunday, monday, tuesday, etc.) Sets the day of the week the calendar should start on.
month_type long long, short Determines what version of the month name to use in the header. long = January, short = Jan.
day_type abr long, short, abr Determines what version of the weekday names to use in the column headers. long = Sunday, short = Sun, abr = Su.
show_next_prev FALSE TRUE/FALSE (boolean) Determines whether to display links allowing you to toggle to next/previous months. See information on this feature below.
next_prev_url None A URL Sets the basepath used in the next/previous calendar links.

अगले-पिछले माह के लिंक दिखाना

आपका कैलेंडर next/previous लिंकों के द्वारा महीनों को डायनेमिक रूप से घटा बढ़ा सके इसके लिए जरूरी है कि आप अपने कैलेंडर का कोड इस प्रकार से लिखें.

$prefs = array (
               'show_next_prev'  => TRUE,
               'next_prev_url'   => 'http://example.com/index.php/calendar/show/'
             );
$this->load->library('calendar', $prefs);
echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

आप ऊपर के उदाहरण में कुछ महत्वपूर्ण चीजें पाएंगे:

  • आपको "show_next_prev" को TRUE करना होगा(यानि कि सक्षम करना होगा).
  • आपको "next_prev_url" में आपको कैलेंडर वाले कंट्रोलर का यूआरएल लिखना होगा.
  • आपको यूआरआई के वर्ष तथा माह वाले खंडों को generate वाले फ़ंग्शन में बताना होगा. कृपया ध्यान दें कि कैलेंडर क्लास स्वत: ही आपके द्वारा दिये जाने वाले आधार यूआरएल में वर्ष और माह जोड़ लेती है.

एक कैलेंडर टेम्प्लेट बनाना

कैलेंडर टेम्प्लेट बनाने से आप अपने कैलेंडर के स्वरूप को पूरी तरह से नियंत्रित कर सकते हैं. जैसा कि नीचे दिया हुआ है आपके कैलेंडर का प्रत्येक हिस्सा स्यूडो वैरिएबलों के जोड़ों में रखा जाना चाहिए:

$prefs['template'] = '
{table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open}
{heading_row_start}<tr>{/heading_row_start}
{heading_previous_cell}<th><a href="{previous_url}">&lt;&lt;</a></th>{/heading_previous_cell}
{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th><a href="{next_url}">&gt;&gt;</a></th>{/heading_next_cell}
{heading_row_end}</tr>{/heading_row_end}
{week_row_start}<tr>{/week_row_start}
{week_day_cell}<td>{week_day}</td>{/week_day_cell}
{week_row_end}</tr>{/week_row_end}
{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content}
{cal_cell_content_today}<div class="highlight"><a href="{content}">{day}</a></div>{/cal_cell_content_today}
{cal_cell_no_content}{day}{/cal_cell_no_content}
{cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}
{cal_cell_blank}&nbsp;{/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</table>{/table_close}
';
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();

8 टिप्‍पणियां:

  1. आप बहुत अच्छी जानकारियाँ दे रहे हैं अंकुर। जब भी किसी को पीऍचपी सीखनी हो ये बहुत उपयोगी होंगी। यह क्रम जारी रखें, भले ही तात्कालिक रुप से बहुत टिप्पणियाँ या विजिटर न आयें पर देर-सवेर यह बहुत लोगों के काम आयेंगी।

    जवाब देंहटाएं
  2. आप बहुत अच्छी जानकारियाँ दे रहे हैं अंकुर।

    जवाब देंहटाएं
  3. धन्यवाद, मैं टिप्पणियों का जवाब इसलिए नही दे पाया क्योंकि मुझे सूचित करने वाले ईमेल नही मिले

    जवाब देंहटाएं
  4. आप कोडइग्नाईटर की यूज़र गाइड का हिन्दी में अनुवाद कर रहे हैं यह अच्छी बात है। बस यही कहना है कि हर लेख के ऊपर संदर्भ दे दें कि यह इस पृष्ठ का हिन्दी अनुवाद है, क्योंकि अंजान व्यक्ति को यही लगेगा कि यह आपकी मौलिक रचना है जो कि सत्य नहीं है! :)

    जवाब देंहटाएं

इस ब्लाग में प्रकाशित सामग्री कापीराईट द्वारा सुरक्षित है. बिना अनुमति इसका किसी भी प्रकार से अन्यत्र प्रयोग/प्रकाशन मूल रूप में/बदल कर उपयोग नही किया जा सकता है.

हिंदी में तकनीकी लेखन को प्रोत्साहित करें

please donate अभी तक वेब डेवलपमेंट अथवा प्रोग्रामिंग आदि से संबंधित जानकारी पर अंग्रेजी का एकाधिकार रहा है. भारत में इतने आई टी गुरू होने के बावजूद भारतीय भाषाओं में इस विषय पर लेखन नगण्य है. इस ब्लाग के माध्यम से मैं हिन्दी भाषिओं तक वेब डेवलपमेंट का ज्ञान पहुंचाने की कोशिश कर रहा हूं. अत: आप सभी से अनुरोध है कि हिंदी में तकनीकी लेखन के लिये सहयोग करें
मैं वेबसाइटें भी बनाता हूं. यदि आपको बनवानी हो तो बताएं.

ARCHIVES

इस ब्लॉग में खोजें

फ़ॉलोअर