اضافه کردن toolbar به کامپوننت   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو

مقدمه

در این مقاله آموزش کامپوننت نویسی جوملا قصد داریم چگونگی اضافه کردن toolbar به back-end کامپوننت‌ها را توضیح دهیم.

کلاسی که برای ایجاد Toolbar باید فراخوانی کنیم JToolBarHelper نام دارد. اسکریپت این کلاس در آدرس

SiteRoot\administrator\includes\toolbar.php

قرار دارد.

ایجاد یک عنوان برای toolbar کامپوننت

برای این منظور باید تابع ()title را از کلاس JToolBarHelper فراخوانی کنیم. مشخصات این تابع و الگوی استفاده از تابع ()title به صورت ذیل است.


<source lang="php" > public static function title($title, $icon = 'generic.png'); </source>


که در آن title$ برای مشخص کردن عنوان toolbar مورد استفاده قرار می‌گیرد و icon$ برای مشخص نمودن آیکون مورد استفاده در Toolbar مورد استفاده قرار می‌گیرد این پارامتر اختیاری است و اگر نام و پسوند تصویر مورد نظر را وارد نکنید تصویر پیش فرض جوملا جایگزین آن خواهد شد.

تصویر مذکور از آدرس زیر قابل مشاهده خواهد بود.

SiteRoot\administrator\templates\bluestork\images\header

نحوه استفاده :


<source lang="php" > JToolBarHelper::title( 'New Custom Toolbar'); </source>


کد بالا یک عنوان مشخص با آیکون پیش فرض همانند تصویر پایین برای کامپوننت ایجاد می‌کند.


Comptitle.png


ایجاد دکمه‌های Toolbar

در این بخش از آموزش تصمیم نحوه اضافه کردن دکمه‌های کامپوننت را به Toolbar بررسی خواهیم کرد. دکمه‌هایی همانند شکل ذیل.


Toolbar.png


برای ایجاد دکمه برای Toolbar توابع زیادی وجود دارند که مشروح مهم ترین آنها به علاوه نحوه استفاده از آنها به صورت زیر است


<source lang="php" >

public static function trash($task = 'remove', $alt = 'JTOOLBAR_TRASH', $check = true);
public static function apply($task = 'apply', $alt = 'JTOOLBAR_APPLY');
public static function save($task = 'save', $alt = 'JTOOLBAR_SAVE');
public static function save2new($task = 'save2new', $alt = 'JTOOLBAR_SAVE_AND_NEW');
public static function save2copy($task = 'save2copy', $alt = 'JTOOLBAR_SAVE_AS_COPY');
public static function cancel($task = 'cancel', $alt = 'JTOOLBAR_CANCEL');
public static function checkin($task = 'checkin', $alt = 'JTOOLBAR_CHECKIN', $check = true);
public static function preferences($component, $height = '550', $width = '875', $alt = 'JToolbar_Options', $path = , $onClose = );
public static function publish($task = 'publish', $alt = 'JTOOLBAR_PUBLISH', $check = false);
public static function custom($task = , $icon = , $iconOver = , $alt = , $listSelect = true);

</source>


ساختن دکمه ذخیره و بستن

<source lang="php" > JToolBarHelper::save('save'); </source>


در واقع save نام تابع task در controller.php است که با رویداد کلیک (برروی دکمه ذخیره) اجرا خواهد شد. در اکثر پروژه‌های کاربردی کامپوننت نویسی ما باید رویداد مربوطه به دکمه را مشخص کنیم. بنابراین کد اختصاصی دکمه مربوطه باید در این قسمت مشخص شود. به عنوان مثال بعد از ایجاد یک دکمه توسط کدی که در خط بالا مشخص شد، شما باید یک تابع مربوط به save در controller.phpتان بنویسید و از آن طریق عملکرد آن دکمه را مشخص کنید


<source lang="php" > public function save()

{
    echo 'I Am in Save';   
    $this->display();
}

</source>


به این صورت تابع بالا ( function save ) هنگامی که رویداد کلیک برروی دکمه save انجام شد فراخوانی می‌شود.

نکته : برای آنکه تابع بالا هنگام رویداد کلیک فراخوانی شود شما مجبورید کد زیر را را در فایل default.php در داخل تگ <form> قرار دهید. فایل default.php در قسمت view و در داخل فولدر tmpl افزونه‌های جوملا قرار دارد.


<source lang="php" > <input type="hidden" name="task" value="" /> </source>


ساختن دکمه انتخاب‌ها (options)

جهت دریافت پارامترها از فایل config.xml همانند systax زیر عمل می‌کنیم.


<source lang="xml" >

   <field
       name="ratings"
       type="radio"
       label="Basic Ratings"
       description="Basic Ratings Desc"
       default="1">
           <option value="1">JYES</option>
          <option value="0">JNO</option>
   </field>

</source>


و یک نمونه کامل از config.xml را می‌توانید مشاهده کنید.


<source lang="xml" >

   <?xml version="1.0" encoding="utf-8"?>
   <config>
       <fieldset name="Basic"
       label="Basic"
           description="Basic Label">
           <field
               name="ratings"
               type="radio"
               label="Basic Ratings"
               description="Basic Ratings Desc"
               default="1">
                   <option value="1">JYES</option>
                   <option value="0">JNO</option>
           </field>
           <field
               name="catid"
               type="category"
               extension="com_content"
               multiple="true"
               size="8"
               label="JCATEGORY"
               description="COM_COMMENTS_CATEGORY_DESC">
                   <option value="">
                           JOPTION_ALL_CATEGORIES
                   </option>
           </field>       
       </fieldset>   
       <fieldset name="Advanced"
       label="Advanced"
           description="Advanced Label">
           <field
               name="enabled"
               type="radio"
               label="Advanced Label"
               description="Advanced Level Desc"
               default="1">
                   <option value="1">JYES</option>
                   <option value="0">JNO</option>
           </field>  
       </fieldset>   
   </config>

</source>


همانطور که مشخص است ما می‌توانید مقدار یک پارامتر را با استفاده از تگ <field> دریافت کنیم. اما در این بخش تصمیم داریم با استفاده از Rating مقادیر پارامترها را دریافت کنیم. برای این منظور ابتدا باید اطلاعات کامپوننت را با استفاده از دستور زیر بگیریم.


<source lang="php" > $component = JComponentHelper::getComponent( 'com_hello' ); </source>

با استفاده از کد زیر می‌توانیم کل پارامترها را دریافت کنیم.


<source lang="php" > $params = new JParameter( $component->params ); </source>


با استفاده از کد زیر کل پارامترهایی که دریافت کرده‌ایم را می‌توانیم نمایش دهیم.


<source lang="php" > {"ratings":"0","catid":[""],"enabled":"0"} </source>


دریافت یک پارامتر خاص با استفاده از کد زیر


<source lang="php" > echo $component->params->get( 'ratings' ); </source>


ایجاد یک toolbar با دکمه‌های دلخواه برای کامپوننت

جهت ایجاد toolbar برای کامپوننت ما باید از تابع ()costum کلاس JToolBarHelper به صورتی در کد زیر نمایش داده شده است استفاده کنیم.


<source lang="php" > public static function custom($task = , $icon = , $iconOver = , $alt = , $listSelect = true); </source>


با شکل کلی


<source lang="php" > JToolBarHelper::custom('apply', 'checkin', 'checkin', 'Connect',false); </source>


apply : نامی task ایکه باید با رویداد Onclick اجرا شود.

connect : این مورد زیر دکمه آیکون نمایش داده می‌شود.

checkin : یک آیکون است که مربوط به قالب جاری مدیریت جوملا است و از طریق (JoomlaRoot\administrator\templates\bluestork\images\toolbar) در دسترس می‌باشد. و از طریق دستورات css زیر این عکس به کامپوننت لینک می‌شود.


<source lang="css" >

   .icon-32-checkin                   
   {   
       background-image: url(../images/toolbar/icon-32-checkin.png);   
   }

</source>


JToolBarHelper به دنبال نام فایل آیکون بعد از -icon-32. میگردد.


اضافه کردن task

ما مجبوریم taskهارا در controller با دستورات نظیر دستورات زیر اضافه کنیم.


<source lang="php" > $this->registerTask('approve', 'status'); </source>

در این مثال status نام تابعی است که برای task مربوط به approve صدا زده شده است.

برای گرفتن نام task باید از دستور زیر استفاده کنیم.


<source lang="php" > JRequest::getVar('task'); </source>


نوشتن تابع status در controller.php به صورت زیر خواهد بود.


<source lang="php" > public function status()

{
    echo 'I Am in Apply';
    $this->display();
}

</source>


نکته مهم : برای اینکه این تابع هنگام رویداد کلیک اجرا شود شما مجبورید که کد زیر را در فایل default.php در داخل تگ <form> قرار دهید تا این تابع فراخوانی و task اجرا شود.


<source lang="php" > <input type="hidden" name="task" value="" /> </source>


ایجاد تب منو در Backend

کلاس استفاده شده : JSubMenuHelper

محل فایل : "JoomlaRoot\administrator\includes\toolbar.php"

تابع مورد استفاده قرار گرفته : ()addEntry از کلاس JSubMenuHelper.

نحوه تعریف تابع :


<source lang="php" > public static function addEntry($name, $link = , $active = false); </source>


name$ جهت مشخص کردن نام submenu

link$ لینکی که محل باز شدن آیتم تب منو را مشخص می‌کند

active$ این گزینه وقتی که زیرمنو فعال است (بر روی لینک آن کلیک شده است) مقدار true می‌پذیرد و در غیر اینصورت مقدار false را خواهد داشت.

نحوه استفاده :


<source lang="php" > JSubMenuHelper::addEntry('View 1', 'index.php?option=com_hello&view=world',true); JSubMenuHelper::addEntry('Submenu2', 'index.php?option=com_hello'); JSubMenuHelper::addEntry('Submenu3', 'index.php?option=com_hello'); JSubMenuHelper::addEntry('Submenu4', 'index.php?option=com_hello'); </source>


بنابراین شما باید خروجی همانند شکل زیر داشته باشید.


Submenu.png

جمع آوری شده توسط :شهاب مطاع پور

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.